++ 연산자 두번째 질문
봄여우
2023.04.01
질문 제목 : ++ 질문
연산자 질문요질문 내용 :
x = y = z= -1;
++x && ++y || ++z;
printf(%d %d %d, x,y,z);
출력값
0 -1 0
-----------------------------------
++x,++y,++z 모두 선증가후연산 이잖아요?
그런데, x,y,z 모두 -1로 선언 되있는데
선증가 후연산에 의해 결과값이 0 0 0 이 되어야 할텐데
어째서 0 -1 0 이 나오는걸까요, 그리고
&& || 는 왜있는 거죠?
상세하게 차례로 설명 부탁드리겠습니다!!
-
희라
의 경우에는 둘 중 하나만 0이 되면 그 값은 0이 되는건 잘 아실겁니다.
만약 0x 라고 쓸 경우에는 x의 값이 전혀 고려되지 않는 것이죠
그런데 만약 ++x++y라고 쓰면 ++x는 0이기 때문에 ++y의 값
에 상관없이 답이 0이 되버리기 때문에 ++y 연산은 하지 않고 건너뛰게 됩니다.
따라서 y는 그냥 -1로 남아있게 됩니다.
이와 비슷하게 nonzero || ++z 같은 경우에는 앞의 수가 0이 아니라서 결과가 무조건 1이 되기 때문에
+