여기서 퍼즐을 볼 수 있습니다. 아래와 같은 프로그램이 있다고 가정해 보겠습니다. 무엇이 출력되고 그 이유는 무엇인지 알려주어야 합니다.
#include<iostream> using namespace std; int main() { int x = 0xab; ~x; cout << hex << x; }
그럼 출력은 어떻게 되나요? ~x가 보수 연산을 수행 중입니다. 그러면 2의 보수 결과가 16진수로 표시됩니까?
출력은 다음과 같습니다
ab
따라서 변경 사항은 없습니다. 그런데 왜? 그 이유는 ~x가 x를 보수 형식으로 변환하지만 값이 어떤 변수에도 할당되지 않기 때문입니다. 이 표현식은 R 값 표현식입니다. lvalue는 사용될 때까지 일부 변수에 저장되지 않습니다. L 값을 입력하면 다음과 같습니다. -
#include<iostream> using namespace std; int main() { int x = 0xab; x = ~x; cout << hex << x; }
ffffff54
위 내용은 C/C++ R-값 표현에 대한 퍼즐이 있으신가요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!