반응형



코딩을 다음과 같이 하면 출력은 무엇이 될까??



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 < 0printf("%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