2016-10-14 3 views
0

이 코드는 왜 그리고 어떻게 작동합니까?이 C++ 코드는 비정상적인 단일 부울 문과 어떻게 작동합니까?

#include <iostream> 

using namespace std; 

void nothing() 
{ 
    false; 
} 

int main() 
{ 
    cout << "Working" << endl; 
    nothing(); 
    cout << "It worked!" << endl; 
} 

당신이 볼 수 있듯이,이 함수 nothing()의 함수 정의는의 문 false;하지만 아무 상관이없는,하지만 여전히 그것을 컴파일하고 아무것도하지 않고, 잘 실행됩니다. 어떻게 그리고 왜 이것이 가능한가? 내가 여기서 뭔가를 놓치고 있니?

+2

왜이 코드가 잘못 되었습니까? 여기에 코드도 있습니다 :'1; 2; 3;' –

+0

@Lashane 코드가 잘못되었다고 생각하지 않습니다. 어떻게 작동하는지 궁금 해서요. 감사합니다. btw – arghhjayy

답변

6
false; 

은 C++에서 유효한 문입니다. 유용한 것은 아니지만 유효합니다. 대부분의 컴파일러는 함수에 대해 만든 객체 코드에서 해당 행을 제거합니다.

올바른 컴파일러 플래그가있는 일부 컴파일러는 명령문이 아무 효과가 없음을 알려줍니다. g++ --Wall을 사용하면 다음과 같이 표시됩니다.

socc.cc: In function ‘void nothing()’: 
socc.cc:3:9: warning: statement has no effect [-Wunused-value] 
    false; 
+1

또한 많은 사람들이 경고를 생성합니다. 성명서는 아무런 효과가 없습니다 – Slava

+0

@Slava, 참으로. –

+0

_ "대부분의 컴파일러는 함수에 대해 작성한 객체 코드에서 해당 행을 제거 할 것입니다."_ 함수에 대해 만들 수있는 객체 코드를 상상해 보려고합니다. 이 줄은 문자 그대로 프로그램의 의미에 영향을 미치지 않습니다. –

관련 문제