Computer >> Máy Tính >  >> Lập trình >> lập trình C

Câu đố về Biểu thức giá trị R trong C / C ++?

Ở đây chúng ta sẽ thấy một câu đố. Giả sử có một chương trình được đưa ra như bên dưới, chúng ta phải cho biết đâu sẽ là đầu ra và tại sao?

Ví dụ

#include<iostream>
using namespace std;
int main() {
   int x = 0xab;
   ~x;
   cout << hex << x;
}

Vậy đầu ra sẽ là gì? Dấu ~ x đang thực hiện phép toán bổ sung. Vậy nó có hiển thị kết quả bổ sung ở dạng hex không?

Đầu ra giống như sau

Đầu ra

ab

Vì vậy, không có sự thay đổi. Nhưng tại sao? Lý do là ~ x đang chuyển x thành dạng bổ sung của nó, nhưng giá trị đó không được gán cho bất kỳ biến nào. Biểu thức là biểu thức giá trị R. Cho đến khi Lvalue được sử dụng, nó sẽ không được lưu trữ vào một số biến. Nếu chúng ta đặt giá trị L, nó sẽ như thế này -

Ví dụ

#include<iostream>
using namespace std;
int main() {
   int x = 0xab;
   x = ~x;
   cout << hex << x;
}

Đầu ra

ffffff54