C언어 연산자 우선순위 질문이요...
조회수 1002회
int a=0,b=0; a+++b; printf("%d %d", a,b);
다음 코드를 실행하면, 연산자 우선순위와 결합방향을 고려했을때 a+++b 가 a+(++b) 가 되서, 0 1 이 출력되어야 하는게 아닌가요??
왜 1 0이 출력되는걸까요...???
1 답변
-
아래의 링크에서 C언어 연산자 우선순위를 확인해 보시면 Suffix increment가 Prefix increment보다 우선 순위가 높습니다. 즉, a+++b는 a+(++b)이 아니고 (a++)+b으로 처리됩니다.
https://en.cppreference.com/w/c/language/operator_precedence
a+++b와 같이 다른 사람이 한번에 이해할 수 없는 직관적이지 않은 코드는 유지 보수의 관점에서 나쁜 코드에 해당합니다. 이런 경우라면 괄호를 꼭 사용해서 작성자의 의도를 정확히 기록하는 것이 좋습니다.
-
(•́ ✖ •̀)
알 수 없는 사용자
-
댓글 입력