C C 差異之左值右值

2021-06-26 21:50:19 字數 492 閱讀 8204

c與c++在語法細節上還是有一些差異的,雖然一般情況下可能這些差異不足以造成結果的區別,但有些**確實會有影響。

這次,主要總結下左值右值的差異。

在c中,很多左值運算子的結果都不再是左值,然而在c++中,只要邏輯上可行,左值運算子的結果仍然是左值。c++的這種方式,讓運算子表示式之間的靈活性更大。

1、++i,我們都習慣了在c++中,i 自加後返回自己;然而在c中i自加後,返回的是個臨時的副本,即和i++是一樣的,此結果不能作為左值,即(++i)=0非法。所以我想這就是為什麼**中還是很多for迴圈中使用著i++,因為在c中,我認為i++與++i的效率是一樣的。

2、=,同樣的,c中結果是右值,即 (a = b) = c在c中是不合法的,然而在c++中是可以的。

3、?:,c中返回的分支結果是右值,在c++中規定是,只要兩分支都是左值且型別相同,結果亦為左值(參見,c++程式語言-特別版 第6.2節)。即如下:

C C 筆記 之左值引用和右值引用

1 左值和右值的概念 左值是可以放在賦值號左邊可以被賦值的值 左值必須要在記憶體中有實體 右值當在賦值號右邊取出值賦給其他變數的值 右值可以在記憶體也可以在cpu暫存器。乙個物件被用作右值時,使用的是它的內容 值 被當作左值時,使用的是它的位址。2 引用 引用是c 語法做的優化,引用的本質還是靠指標...

c 之左值和右值

1,左值和右值 定義 左值與右值這兩概念是從 c 中傳承而來的,在 c 中,左值指的是既能夠出現在等號左邊也能出現在等號右邊的變數 或表示式 換句話說,就是表示記憶體中可以定址,可以給它賦值 const型別的變數例外 右值指的則是只能出現在等號右邊的變數 或表示式 表示可以知道它的值 例如常數 變數...

c 之左值引用和右值引用

一 左值與右值定義 左值與右值這兩概念是從 c 中傳承而來的,在 c 中,左值指的是既能夠出現在等號左邊也能出現在等號右邊的變數 或表示式 右值指的則是只能出現在等號右邊的變數 或表示式 在 c 語言中,通常來說有名字的變數就是左值 如上面例子中的 a,b 而由運算操作 加減乘除,函式呼叫返回值等 ...