關於 C/C++ R 值表示式的謎題?
下面我們將會看到一個謎題。假設有一個程式如下所示,我們需要說明輸出是什麼以及原因是什麼?
示例
#include<iostream>
using namespace std;
int main() {
int x = 0xab;
~x;
cout << hex << x;
}那麼輸出是什麼?~x 執行的取反操作。因此它是否以十六進位制形式顯示取反結果?
總的來說輸出如下
輸出
ab
因此,沒有發生變化。為什麼呢?原因是 ~x 將 x 轉換為取反形式,但該值未分配給任何變數。表示式是 R 值表示式。在使用 L 值之前,它不會儲存到某些變數中。如果我們放置 L 值,它將如下所示 −
示例
#include<iostream>
using namespace std;
int main() {
int x = 0xab;
x = ~x;
cout << hex << x;
}輸出
ffffff54
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP