[[프로그래밍_NOTE]]/Bit 전형 기출문제

단축연산 [01.04.25]

갑빠돌격기 2008. 8. 18. 14:23

※ 다음의 출력값을 예상하고 이유를 기술하시오.
///////////////////////////////////////////////
#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 연산은 이루어 지지 않는다.