C에서 접미사와 접두어 연산자 우선 순위와 혼동됩니다. 어떤 도움이나 힌트라도 도움이됩니다.접두사 접두어 ++와 2 진수 & 연산자 우선 순위
여기 내 테스트 코드를 붙여 있습니다 :
#include <stdio.h>
int a = 0;
int main(int argc, char *argv[])
{
if (++a & 0x01) // prefix version
// if (a++ & 0x01) // postfix version
{
printf("++ first\n");
}
else
{
printf("& first\n");
}
return 0;
}
지금 postfix ++
이 더 큰 우선 순위를 가지고 있지만 후위 버전, a++
가 0x01
와 &
여기 0
을 반환하고 a
를 증가 것이라고 이해할 수있다 이 식 뒤에 값이 있습니다.
하지만 내가 이해할 수없는 것은 접두어 버전에서 왜 ++a
이 처음 평가되는 것입니까? 연산자 우선 순위 테이블은 prefix ++
과 &
이 같은 우선 순위를 가지며, 또한 이들의 연관성이 right-to-left
임을 나타냅니다. 이것이 먼저 &
을 평가해야한다는 뜻입니까?
편집 : 차트 내가 사용 : C Operator Precedence Table
어떤 차트를 사용하고 있습니까? 이는 올바르지 않습니다. '++'는 바이너리'&'보다 우선 순위가 높습니다. [here] (http://www.swansontec.com/sopc.html)를 참조하십시오. –