인프런 커뮤니티 질문&답변

상욱님의 프로필 이미지
상욱

작성한 질문수

홍정모의 따라하며 배우는 C++

3.6 논리 연산자 logical operators

질문있습니다.

해결된 질문

작성

·

259

0

9:00

int x = 0;

int y = 1;

if ((!x) == y)

{

cout  << " x does not equal y" << endl;

}

else

        cout  << " x equals y" << endl;

위 식에서 if는 x,y 중 하나만 false의 값을 가졌을때 true가 되며 나머지는 항상 false입니다. 

0이 아니면 true인데 y가 2 이상이 되면 false가 됩니다.

왜이런가요?

답변 6

1

상욱님의 프로필 이미지
상욱
질문자

출력값과 타입을 놓치고 있었네요.

감사합니다.

1

!a의 값을 출력해보시고 이해가 안되시면
== 가 뭔지 공부해보세요. 내용은 3.5 Relational Operators 강의에 나와있습니다.
특히 (10:00~) 를 이해하시는게 중요해보이네요.

1

!((A&&B)||(!A&&!B))   또는  (!A||!B)&&(A||B)

이런 방식으로 가능하실겁니다.

이제보니 bool type 으로 쓰고 연산자 하나로

목표를 수행하고자 하셨을 수도 있겠네요.

그렇지만 앞서 시도하셨듯이 int와 함께 사용하려면 시도하셨던 방식은 좋지 못하다고 생각합니다.

개인적으로 이 강의를 다시 한 번 보시고 내용들을 정리하셨으면 좋겠습니다. (각 연산자들이 무슨 일을 하는지 숙지하실 필요가 있습니다.)

1

1==1 과 1==2 의 결과를 생각해보세요.
목표로 하시는 코드는 &&를 이용하셔야할 것 같습니다.

0

상욱님의 프로필 이미지
상욱
질문자

뼈해장국으로 든든하게 배채우고 왔는데도 뭘 놓치고 있는지 모르겠습니다.

bool a = false;

if ((!a)==1) 과 if((!a)==2)의 값이 다르게 나오는 이유가 있나요?

0

상욱님의 프로필 이미지
상욱
질문자

bool 타입으로 x,y 변수를 선언하고 x,y값 중 하나만 false를 가졌을때 true가 되고 나머지는 항상 false입니다.

&&를 사용해 x가 true, y가 false일때 else가 출력되는 이유는 (false && false) = false 인가요? 

상욱님의 프로필 이미지
상욱

작성한 질문수

질문하기