1(true, 참) 또는 0(false, 거짓) 이 입력되었을 때
반대로 출력하는 프로그램을 작성해보는 문제이다.
내가 처음 접근했던 풀이이다. 1이든 2든 0이 아닌 수를 입력하면 0이 출력이 되는데, 0을 입력했을 때도 0이 나온다.
그 이유는 if의 조건식 성립이 잘 못되었기 때문이라고 생각한다.
#include<stdio.h>
int main(void)
{
int a;
scanf("%d", &a);
if (a = 0)
printf("1");
else
printf("0");
return 0;
}
<정답풀이>
#include<stdio.h>
int main(void)
{
int a;
scanf("%d", &a);
printf("%d", !a);
return 0;
}
논리 연산자 ! 을 통해 단순히, 변수 a 앞에! 를 써주는 것만으로도, 참이면 거짓을, 거짓이면 참을 반환하여 줄 수 있다.
우리 C언어에서는, 0이 아닌 모든 값을 참으로 간주한다!
거짓을 의미하는 숫자는 유일하게 0 하나이고, 0이 아닌 모든 수가 참으로 인식이 되지만, 그중에서도 참을 의미할 때 주로 사용하는 수가 1이고, 그래서 연산의 결과로 참이 반환되어야 할때 1이 반환되는 것일 뿐이다.
<참고>
#include<stdio.h>
int main(void)
{
int a;
scanf("%d", &a);
if (a == 0)
printf("1");
else
printf("0");
return 0;
}
제일 처음 오답 풀이가 올바른 풀이가 되기 위해서는 조건식에 단순 대입 연산자가 아닌 관계를 설명해줄 수 있는 관계 연산자가 들어가야 알맞은 출력 결과가 나올 수 있다.