2014-12-03 3 views
-2
#include<stdio.h> 

int main() 
{ 
    int i=5; 
    while(i--) 
    { 
     printf("%d\n",i); 
    }; 
    printf("Out of loop\n"); 
    return 0; 
} 

이 코드는 정상적으로 작동합니다. 루프의 끝에 ;은 아무 의미가 없습니까? 그래서 우리가 그것을 추가하더라도, 우리는 아무런 문제가 없습니까? 그냥 궁금해서! 나는 루프의 끝에 ;을 추가한다고 생각하지 않는다.while 루프의 끝에 ';'추가하기

+1

여분의'; "는"빈 문장 "의 종료입니다. '}'뒤에';;'를 추가하면 두 개의 빈 문장이 추가됩니다. – wildplasser

+0

do (/ * condition * /);'동안'do {/ * code * /} '에서';'는 빈 문장이 아닌 *. – DevSolar

답변

10

"작동"하지만 빈 문장이므로 프로그램 구조가 변경됩니다. while는 하나의 명령문, 따라서 else 여전히 if 제대로 "발견"할 수 있기 때문에

if (foo()) 
    while (bar()) 
    { 
    foo_some_more() 
    } 
else 
{ 
    do_something_about_it(); 
} 

위 작품 :

이를 생각해 보자. while -loop의 닫는 중괄호 뒤에 세미콜론을 추가하면 해당 구조가 해제되어 더 이상 컴파일되지 않습니다.

빈 문장이 무해한 것처럼 보일 수도 있지만 실제로는 피해야합니다. 게다가 그들은 코드에 무의미한 혼란을 더합니다.

6

여기서 ;은 빈 문 또는 null 문으로 간주됩니다.

샘플

int i = 0;; 

자세한 내용은, 당신은 this 질문을 확인 할 수 있습니다.

주의 : 엄지 손가락으로 생각하지 마십시오. 표현이 일 수도 있고이 나타나는 경우도 있지만 null 문은 아니지만 구문의 일부입니다. 예 : do..while 루프

3

불필요한 ;은 빈 문장이며이 특정 인스턴스에서는 중복됩니다. 당신이 있어

하나 개의 인스턴스가 하늘의 문이 수행하는 최종 지점에 switch에 사용하는 필요 아무것도 :

switch (expression) 
{ 
    case 1: 
     /*Some statements here or empty*/ 
    case 2: 
    ; /*A statement is required between here and the closing brace 
     An empty statement will suffice.*/ 
} 

당신은 불필요한 빈 문을 사용하지한다고; 그들은 버그를 방출 할 수 있습니다 (특히 리팩터링 작업 중에 코드를 if 문에 포함하는 경우). 오래된 컴파일러는 불평 할 것입니다. 매크로에서 과도한 세미콜론을 사용하면 특히 위험합니다.

+0

Errr ... 세미콜론은 어떻게 필요합니까? – DevSolar

+0

컴파일없이 시도하십시오 ;-) – Bathsheba

+0

모호합니다. 돌발 사례와 같은 것이 있습니다 ... – DevSolar

1

이것은 완전히 유효합니다. 빈 스테이트먼트라고합니다. 아무것도하지 않습니다.

int main() 
{ 
    ; 
    ; 
    ; 
    ; 
    { 
    } 
    return 0; 
} 
0

위의 여러 사용자가 말한 것처럼 관련 세미콜론은 빈 문장으로 아무 효과가 없습니다.

#include <stdio.h> 

int main() 
{ 
    int i=5;  
    while(i--); //<--- Put the semi-colon here and see what you get. 
    { 
     printf("%d\n",i); 
    }  
    printf("Out of loop\n");  
    return 0; 
} 
0
#include<stdio.h> 

int main() 
{ 

    int i=5; 
    while(i--) 
    { 
     printf("%d\n",i); 
    }/*blank statement*/; 
    printf("Out of loop\n"); 
    return 0; 
} 

그냥 빈 문의 :

이 그러나 약간 다른 이야기입니다. 위의 중괄호는 블록의 끝을 알려주므로 블록을 처리합니다. 빈 스 태드로