여기서 우리는 하나의 퍼즐을 볼 것입니다. 아래와 같이 주어진 프로그램이 있다고 가정하면, 우리는 무엇을 출력할 것이며 그 이유를 말해야 합니까?
예시
#include<iostream> using namespace std; int main() { int x = 0xab; ~x; cout << hex << x; }
그럼 출력은 어떻게 될까요? ~x는 보수 연산을 수행하고 있습니다. 그러면 보완된 결과를 16진수 형식으로 표시합니까?
음 출력은 다음과 같습니다.
출력
ab
따라서 변경 사항이 없습니다. 하지만 왜? 그 이유는 ~x가 x를 보완된 형식으로 변환하지만 그 값은 어떤 변수에도 할당되지 않기 때문입니다. 표현식은 R-값 표현식입니다. Lvalue가 사용될 때까지 일부 변수에 저장되지 않습니다. L-값을 넣으면 다음과 같이 됩니다. -
예시
#include<iostream> using namespace std; int main() { int x = 0xab; x = ~x; cout << hex << x; }
출력
ffffff54