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

更新於: 31-Jul-2019

113 次瀏覽

事業前程之路

完成本課程並獲得證書

開始學習
廣告