int main(){
int x, y, z;
x = 0, y = -1, z = 1;
printf("%d\n", ++x||++y&&++z);
printf("%d %d %d\n", x, y, z);
}
일단 실행값은
1
1 -1 1
인데 첫 프린트 줄에서 ++x 하는 부분이 실행되고 0에서 1로 증가한 후 ||연산을 하는데 x가 참이니까 뒤는 계산할 필요도 없이 결과는 1이 되니까 뒤의 &&가 실행이 안된거죠?
근데 제가알기론 첫 프린트 인수 계산할 때 ||연산자보다 &&연산자가 먼저 계산되어야 하지 않나요?
++x||(++y&&++z)
이렇게 말이에요.
잘 모르겠네요 =_=;
내칑그둘리능긔여운아긔공녕호이오이둘릐는초눈력내칭구
그럼괄호를쳐븅신아
조공을 갖고와야 잘봐줄텐디 ㅇㅅㅇ 나도 질문하면서 조공바친적은 없지만..
ISO/IEC 9899:TC3, 6.5.14 Logical OR operator. If the first operand compares unequal to 0, the second operand is not evaluated
/dot 그건 알겠는데 and랑 or이랑 같은 연산식에 있을 때 순차대로 계산하는건지 and를 먼저 계산해야하는건지 잘 모르겠어요. 그리고 다음부터 짤방 꼬박꼬박 올리겠습니다
왜 AND가 먼저라고 생각하지? || 입장에서는 '앞뒤'일 뿐이다.
/dot 네 그건 제가 잘못안 것 같네요 근데 프린트함수의 인자 계산은 뒤에서부터 계산하지 않나요? 여기서도 혼동이 일어나서; 잘 모르겠네요