2013-12-22 2 views
0

출력이 10이 될 것으로 예상합니다. 재미있는 함수를 호출하는 동안 내 지식에 따라 을 얻습니다. 전역 변수를 가져와야합니다. ??글로벌 변수 유효성 검사?

#include <iostream> 
using namespace first; 
int var = 0; 

void fun() 
{ 
    cout << var; 
} 

int main() 
{ 
    var = 1; 
    cout << var; 
    fun(); 
} 
+3

가 왜'기대 출력 10'? –

+0

예, 수정 한 전역 변수를 사용합니다. – chris

+0

왜 10을 얻지 않습니까? – user3127386

답변

4

될 것입니다. 그것이 출력으로 11을 얻는 이유입니다.

+0

main() 내부의 var는 어떻게 전역 var을 업데이트 할 수 있습니까 ?? – user3127386

+1

@ user3127386'main()'*의'var '은 * 전역 변수입니다. – juanchopanza

+0

@ juanchopanza 그래서 모든 유형의 로컬 범위에서 전역 변수를 업데이트 할 수 있습니까? – user3127386

4

var 만 신고하십시오. 글로벌 변수를 로컬 선언으로 쉐도 잉하면 로컬 변수가 사용됩니다.

예를 들어 섀도 잉 작동 원리에 대한 정보는 this StackOverflow post을 참조하십시오.

4
int main() 
{ 
    int var=1; 
    cout<<var; 
    fun(); 
} 

현재로서는 main()에 범위를 지정하는 대신 글로벌을 수정하는 것입니다.

그런 다음 출력은 당신이 두 번 'VAR'을 인쇄 한 후 1 'VAR'의 가치를 재 할당되고

10 
2

var1을 할당 한 후 동일한 변수를 두 번 인쇄합니다. 두 개의 다른 변수를 만들지는 않지만 변수 값을 변경하는 것입니다.

+0

게시물을 올바르게 이해할 수 있는지 모르겠지만 다른 변수를 선언하지 않고 전역 변수의 값을 변경합니다. 위의 특정 경우에는 사용 된 특정 값 때문에 11이 표시되지 않습니다. –

+0

예, var = 1 이전에 int가 없다는 것을 알지 못했습니다. – enedil

-1

바르 = 0 다음 VAR = 1 개 인쇄 var에 두 번 11

+0

이 질문은 답변보다 더 좋은 의견이라고 생각합니다. 그러나 답변을 작성하기 위해 더 많은 정보를 추가 할 수는 있습니다. –

관련 문제