關於 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
廣告