void main()
{
int x, y, z;
x=y=z=1;
int b;
b=( (x-- > 0) || (++y!=0) && (--z!=0) );
printf("%d, %d, %d, %d \n", x, y, z, b);
}
여기서
x=0,y=2,z=0 b=1 나올줄 알았는데 아니네;
답은 x=0 y=1 z=1 b=1 이네
설명좀 해줄횽
void main()
{
int x, y, z;
x=y=z=1;
int b;
b=( (x-- > 0) || (++y!=0) && (--z!=0) );
printf("%d, %d, %d, %d \n", x, y, z, b);
}
여기서
x=0,y=2,z=0 b=1 나올줄 알았는데 아니네;
답은 x=0 y=1 z=1 b=1 이네
설명좀 해줄횽
그래서 모르는게 어떤 부분이야
http://cafe.naver.com/haskeller/5
저거야 short cut 개념 아는지 확인하는 문제인거고 숏컷 자체는 좋은거임.
|| 는 앞뒤 둘중에 하나라도 참이면 참이라서 앞에게 참이면 뒤에 연산은 쌩까는거 아님? x가 1이라서 0보다 크니 || 문은 참이라 뒤에 문장은 실행 자체가 안됨 논리연산상 ||를 +로 보고 &&를 *로 보니까 저건 A + B * C 라서 BC를 한 묶음으로 보니까 앞에 A 부분이 참이라 뒤에 다 실행 안된듯.
결론 : 저런 좆캍은 코드 짜지마라