C++ 반전 연산자~와 논리 연산자 !의 차이

Skills/Programming 2014. 12. 16. 14:51

case CMD_TELEOPERATION:    

{

bETRI_Tele = !bETRI_Tele;

cout<<"bETRI_Tele : "<<bETRI_Tele<<endl;

}

MFC 다이얼로그를 통해 버튼을 누르면 위의 코드에 들어가게 해 두었다.

그런데 이상한 점 발견! 


bETRI_Tele = ~bETRI_Tele; 로 할 때에는 cout이 계속 1의 값을 반환한다는 것이다!

그러나 bETRI_Tele = !bETRI_Tele; 로 할 때에는 버튼을 누를 때마다 0과 1의 값이 반복되면서 제대로 잘 나온다.


일단, 그 원인은 ~가 bit 연산자라는 것에 있을 것으로 판단되고 boolean이 bit로 보았을 때에는 단순한 1과 0 이 아닐 것이라는 추측이 된다.

설정

트랙백

댓글