※ 다음의 출력값을 예상하고 이유를 기술하시오.
///////////////////////////////////////////////
#include<stdio.h>
void main()
{
int x=1 , y=-1 , z=2;
printf("%d\n", ++x||++y&&++z);
printf("%d %d %d \n " , x,y,z);
}
///////////////////////////////////////////////
[ result ]
(출력)
1
2 -1 2
[ analysis ]
단축평가 - || 연산자 앞이 참이면 항상 참이므로,
++x 의 연산은 이루어진뒤 전체 값은 항상참(1)으로 셋팅되고
그 이후는 연산되지 않는다.
///////////////////////////////////////////////
#include<stdio.h>
void main()
{
int x=0 , y=-1 , z=1;
printf("%d\n", ++x&&++y&&++z);
printf("%d %d %d \n " , x,y,z);
}
///////////////////////////////////////////////
[ result ]
(출력)
0
1 0 1
[ analysis ]
단축평가 - ++y 가 0이되므로 전체 값은 0으로 셋팅되며
++z 연산은 이루어 지지 않는다.