2013-03-18 3 views
-1

결과는 6입니다. 그러나 i = 5가 0이 아닌 값으로 간주되지는 않습니까? 내가 i + = 5를하면, 사실로 간주됩니다. 이 점이 다른 이유는 무엇입니까? (또한 아니오, 나는 i == 5로 두는 것을 의미하지 않았다.)간단한 주제, 과제가 '거짓'을 반환합니까?

int i=7; 
if(i=5) { 
cout << ++i; 
} else { 
cout << --i; 
} 
+0

이 예상 결과가 아닙니다. 'i = 5'표현식이 0이 아닌 경우,'cout << ++ i; '의 결과는 6 (5 + 1)이 cout으로 전송됩니다. –

+0

같은 질문은 전에 stackoverflow에 대한 답변되었습니다. [여기] (http://stackoverflow.com/questions/2003895/in-c-what-causes-an-assignment-to-evaluate-as-true-or-false-when-used-in-a- 죄송합니다.) 그렇습니다. – Arun

+0

힌트 : 사소한 것이라면 이전에 물어 본 것 같습니다. 검색하면 투표 수를 줄일 수 있습니다. – tjameson

답변

3

대입 연산자와이 할당 된 것 후 객체의 값을 반환 +=. 따라서 false 또는 0을 할당하면 할당 연산자에서 false을 얻을 수 있습니다.

i=5은 이고, if()의 눈에는 true입니다. 그러나 i=00으로 평가되며 falseif()으로 간주됩니다.

3

할당은 할당 된 값을 반환합니다. 예 :

int i = 7; 
if (i = 5) { // returns 5, which is non-zero, or "true" 
    cout << ++i; // prints 6, or 5+1 
} else { 
    cout << --i; // would print 4, or 5-1, if it was hit, which it never will 
} 

사전 증가와 사후 증가가 혼동 될 수 있습니다.

int i = 7; 
if (i = 5) { // returns 5, which is non-zero, or "true" 
    cout << i++; // prints 5, i is 6 after this line 
} else { 
    cout << i--; // would print 5, but i is 4 after this line 
} 
2

코드는 다음과 같은 역할을 : 예를 들어, 다음을 고려 = 같은

i = 7; 
i = 5; 
if (5) // it's true. Isn't it ? 
{ 
    i = i + 1; // now i is 6 
    cout << i; 
} 
관련 문제