2017-12-11 13 views
-4
#include<iostream> 
using namespace std; 

int main() 
{ 

    int a=10,b=5,c=3; 
    b!=!a; 
    c=!!a; 
    cout<< b<<" "<< c<< "\n"; 
    return 0; 
} 



The output is: 
5 1. 
+0

어디에서 찾았습니까? – StoryTeller

+3

'b! =! a'는 거의 아무것도하지 않고 (아마 컴파일러에 의해 버려진 것입니다)'c = !! a'는'a'에 두 번하지 않습니다 (기본적으로 true/false 값으로 변환합니다; , 1)이고 그것을'c '에 할당합니다. – Yashas

+0

거기에 없기 때문에 당신은 논리를 얻지 못하고 있습니다. – Slava

답변

1

b!=!ab != (!a)

식이 false 평가 같이 쓸 수있다.

결과가 아무 곳에도 저장되지 않으므로 컴파일러는이 행을 최적화 할 가능성이 큽니다.


c=!!ac = !(!a)

첫 번째 !a과 같이 쓸 수있다는 두 번째 ! (하지 0이 아닌 숫자입니다 0 현재) 당신에게 false을 제공하지 즉 이전의 결과에 수행합니다 당신을 제공합니다 true. 이 값은 c으로 끝납니다. 변수 a, b

내용은 c11 (a 변경되지 않은)이다 5 (b 역시 변경되지 않은) 및 1 (!!a의 결과).

0

b!=!a;b != !a으로 표시됩니다. 이것은 단지 비교 일 뿐이며 어떤 임무도 수행하지 않습니다. c=!!a;c = !(!a)이됩니다. !afalse으로 해석됩니다. 1은 단지 true을 의미합니다.