C 언어 기초

int x = 5;
if (x = 0)
    printf("zero ");
else
    printf("nonzero ");
printf("%d\n", x);

if 문의 조건에 =를 쓴 위의 코드를 실행했을 때의 출력으로 올바른 것은?

  1. Azero 0
  2. Bnonzero 5
  3. Cnonzero 0
정답과 해설 보기

정답: C. nonzero 0

if의 조건 x = 0은 비교하는 ==가 아니라 대입입니다. x에 0이 들어가고 대입식의 값도 0이 되므로 조건은 거짓으로 판단되어, else 쪽의 'nonzero'가 표시됩니다. 이어지는 printf에서는 대입으로 0이 된 x가 표시됩니다. gcc에서는 -Wall을 붙이면 이 작성 방식에 경고가 나오므로, 경고를 켜 두면 실수를 알아차리기 쉬워집니다.

이 분야 연습하기 분야로 돌아가기

C 언어 기초의 다른 문제

  1. 레지스터 값 reg의 비트 2가 1인지를 조사할 생각으로 위의 코드를 작성했다. 실행했을 때의 결과로 올바른 것은?
  2. uint8_t는 8비트의 부호 없는 정수형이다. 위의 코드를 실행했을 때의 출력으로 올바른 것은?
  3. uint8_t는 8비트의 부호 없는 정수형이다. x를 10번 증가시키는 위의 코드를 실행했을 때의 출력으로 올바른 것은?
  4. unsigned char는 8비트, int는 32비트로 한다. 위의 코드를 실행했을 때의 출력으로 올바른 것은?
  5. uint8_t는 8비트의 부호 없는 정수형, int는 32비트로 한다. 위의 코드를 실행했을 때의 결과로 올바른 것은?