1. 578쪽 / 3번문제
타 답변 확인 후 질문드립니다.
그렇다면
#include<stdio.h> main() { int a = 10; if (a == 10 ) printf("a는"); printf("%d입니다.", a); else printf("a는"); printf("%d이 아닙니다." , a); }
|
는
#include<stdio.h> main() { int a = 10; if (a == 10 ) { printf("a는"); printf("%d입니다.", a); } else { printf("a는"); printf("%d이 아닙니다." , a); }}
|
기존 중괄호는 그대로 두고
if (a == 10) 과
else 시작에 중괄호를 하나씩 추가하여 이중 중괄호를 만들어주면 참일까요?
2. 578쪽 / 4번문제
제가 가지고 있는 시나공 문제집에는
해설이
C언어에서는 값이 같은지 비교할 때는 관계 연산자 ==를 사용해야 합니다. 'if (a=200)'처럼 대입연산자 =을 이용하면 a에 200이 저장되고, 200은 참이므로 'a=300;'을 수행합니다. |
라고 쓰여있고, 정답은 3번으로 기재되어 있는데요
정답 오자인가요??
정답은 4번이고
a = 200 이 아니니까 (else)
정답은 출력값 400인가요?
안녕하세요 길벗수험서 운영팀입니다.
[1]
예, 정답입니다.
[2]
? 어느 부분에 오해가 있는지 이해하지 못했습니다.
먼저 a=200은 a가 200인지 비교하는 식이 아닌 a에 200을 치환한다는 대입연산자를 사용한 식입니다. (해당 코드는 오류가 발생하지 않습니다.)
즉, if(a=200) 은 a에 200을 저장하고, if(a)가 되는 것이죠.
문제는 C에서는 0은 거짓, 0외의 숫자는 모두 참으로 인식한다는 것입니다.
a에는 200이 저장되어 있으니 if(a)의 결과는 참(true)이 되겠죠.
따라서 다음 줄 a=300을 수행하게 됩니다.
a=300 수행 후, if문을 벗어나 printf문을 수행하게 되면
a의 값 300이 화면에 출력되게 되겠죠.
행복한 하루되세요 :)
-
관리자2020-08-03 11:14:31
안녕하세요 길벗수험서 운영팀입니다.
[1]
예, 정답입니다.
[2]
? 어느 부분에 오해가 있는지 이해하지 못했습니다.
먼저 a=200은 a가 200인지 비교하는 식이 아닌 a에 200을 치환한다는 대입연산자를 사용한 식입니다. (해당 코드는 오류가 발생하지 않습니다.)
즉, if(a=200) 은 a에 200을 저장하고, if(a)가 되는 것이죠.
문제는 C에서는 0은 거짓, 0외의 숫자는 모두 참으로 인식한다는 것입니다.
a에는 200이 저장되어 있으니 if(a)의 결과는 참(true)이 되겠죠.
따라서 다음 줄 a=300을 수행하게 됩니다.
a=300 수행 후, if문을 벗어나 printf문을 수행하게 되면
a의 값 300이 화면에 출력되게 되겠죠.
행복한 하루되세요 :)