반응형
코딩을 다음과 같이 하면 출력은 무엇이 될까??
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | #include <stdio.h> int main() { int a,b; a = 5; b = 3; if(a < 0) if(b < 0) printf("%d",b); else printf("%d",a); return 0; } | Crocus |
답은 아무것도 출력되지 않는다.
만약 여기서 a값인 5가 출력되었다고 생각한다면, 우선 정답은 틀렸다.
중괄호의 중요성을 좀 더 생각해볼 코드이다.
if문과 else문을 중괄호로 보면 다음과 같다.
if(a<0) // 1번코드
{
if(b<0)
{
printf("%d",b);
}
}
else
{
printf("%d",a);
}
if(a<0) // 2번 코드
{
if(b<0)
{
printf("%d",b);
}
else
{
printf("%d",a);
}
}
1번 코드처럼 생각한 분들과 2번 코드처럼 생각한 분들이 있을텐데,
정답은 2번 코드이다.
if if else가 오면 가장 최근의 if에 else가 붙어간다.
이러한 오류를 범하지 않기위해 중괄호가 비록 코드의 길이를 1~2줄 늘리더라도
중괄호가 왜 중요한지 알아가면 되는것이고,
코더는 코드를 보는 사용자들에게 혼란을 주지 않도록 습관화 들이는 것이 좋을 것이다.
반응형
'Basic > C' 카테고리의 다른 글
scanf를 자유자제로 이용해보기 (2) | 2017.04.18 |
---|---|
Dangling pointer (0) | 2016.05.31 |
파일 입출력 옵션 및 예제 (0) | 2016.02.29 |
문자열 비교시 실수할 수 있는 상황 (0) | 2016.02.14 |
char 배열에 한글을 넣을 때 현상 (0) | 2015.12.20 |