|
void main()
{
int a =5, b=3, c=1,d;
1) d = (a = a-2) || (b = b-1);
printf("d= %d a=%d b=%d\n",d,a,b);
2) d = (a = a-3) && (c = c+3);
printf("d=%d a=%d c=%d\n",d,a,c);
}
결과값은 d=1 a=3 b=3
d=0 a=0 c=1
여기서 1) d=(a=a-2) || (b=b-1)
a는 5-2 이니 a=3이되고 ||는 좌변이참이면 우변은 연산안해서 b는 그대로 b는3이 되는데
여기서 d값이 1 인 왜참이되는거죠? 1)라인에서 계산이 어떻게 이뤄지는지 모르겠네요
d= (a는 3이되었고) || (b는 a가 참값이라서 연산을안해서 3이고) a=3이 왜 참인지
2)라인도 마찬가지입니다 이 질문과
d=(a=a-3) && (c=c+3)
a=3-3라서 0되고 && 좌변이거짓이면 우변은 연산안해서 c는 1이되고 a가 왜거짓인지?
|