C 언어 기초
int x = 5;
if (x = 0)
printf("zero ");
else
printf("nonzero ");
printf("%d\n", x);if 문의 조건에 =를 쓴 위의 코드를 실행했을 때의 출력으로 올바른 것은?
- Azero 0
- Bnonzero 5
- Cnonzero 0
정답과 해설 보기
정답: C. nonzero 0
if의 조건 x = 0은 비교하는 ==가 아니라 대입입니다. x에 0이 들어가고 대입식의 값도 0이 되므로 조건은 거짓으로 판단되어, else 쪽의 'nonzero'가 표시됩니다. 이어지는 printf에서는 대입으로 0이 된 x가 표시됩니다. gcc에서는 -Wall을 붙이면 이 작성 방식에 경고가 나오므로, 경고를 켜 두면 실수를 알아차리기 쉬워집니다.