인프런 커뮤니티 질문&답변

pele0607님의 프로필 이미지
pele0607

작성한 질문수

문제로 배우는 C언어

1부터 N까지 출력

{}의 사용유무

작성

·

235

0

#include<stdio.h>

int main(){

int n,i=1;

scanf("%d", &n);

while(i<=n){

printf("%d ",i);

i++;

}

return 0;

}

제가 코드를 처음에 작성할때 while문 뒤에 {}를 작성을 안하고  컴파일 해서 돌려봤는데 1이 무한번 반복도더라고요...다시 { }을 넣으니까 제대로 되고요. 이유가 뭔지 알수있을까요??ㅜㅜ

답변 2

1

김태원님의 프로필 이미지
김태원
지식공유자

while(i<=n)
    printf("%d\n", i);
    i++;

처럼 중괄로로 묶지 않으면 c컴파일러는 while문의 소속구문으로 ;(세미콜론)까지만 인식합니다.

즉 i++은 while문의 반복구문이 아닙니다. 그래서 i가 1씩 증가하는 일이 반복하는 동안에 일어나지 않는 것입니다. 그러니 while문의 조건도 거짓이 될리가 없구요. 

앞으로 if문이 되었건, while문이 되었건 둘 줄 이상을 소속구문으로 할 때는 꼭 중괄로로 영역을 표시해야 합니다.

0

pele0607님의 프로필 이미지
pele0607
질문자

아 감사합니다! 덕분에 강의 잘 듣고 있습니다!

pele0607님의 프로필 이미지
pele0607

작성한 질문수

질문하기