左值和右值是什么意思 C語(yǔ)言中什么叫做左值?
C語(yǔ)言中什么叫做左值?左值是指可以訪問(wèn)的表達(dá)式。簡(jiǎn)言之,等號(hào)左邊可以出現(xiàn)的是左值。例如:另外,也可以有不是變量的左值:在這里,getref()返回一個(gè)全局變量的引用,該全局變量的值有一個(gè)固定的位置,因
C語(yǔ)言中什么叫做左值?
左值是指可以訪問(wèn)的表達(dá)式。簡(jiǎn)言之,等號(hào)左邊可以出現(xiàn)的是左值。例如:另外,也可以有不是變量的左值:在這里,getref()返回一個(gè)全局變量的引用,該全局變量的值有一個(gè)固定的位置,因此它是一個(gè)左值。右值是指沒(méi)有名稱的值,它只出現(xiàn)在表達(dá)式的計(jì)算過(guò)程中,即在等號(hào)的右邊。例如:getname()返回函數(shù)中構(gòu)造的字符串。你可以把它的值賦給一個(gè)變量,但它是一個(gè)臨時(shí)對(duì)象,我們不知道它的值在哪里。因此,getname()是一個(gè)正確的值。什么是左值和右值?什么是正確的價(jià)值觀?c11中新引入了右值引用。它是一種只與正確價(jià)值相結(jié)合的參照。它不同于用&;表示的左值引用。與左值引用一樣,它也可以是常量或非常量,但在實(shí)際應(yīng)用中我們不會(huì)使用常量的右值引用(您可以想想原因)。讓我們看一些例子:從這些例子中,我們可以看到const的左值引用可以綁定到右值,non-const的左值引用不能綁定到右值,右值引用可以綁定到右值。那么,正確的價(jià)值參考如何幫助我們解決問(wèn)題呢?讓我們繼續(xù)討論右值引用作為函數(shù)參數(shù)的行為。假設(shè)我有以下兩個(gè)函數(shù):第一個(gè)printreference函數(shù)將常量左值引用作為參數(shù)。從前面的例子中,我們知道它可以同時(shí)接受左值和右值。但是,當(dāng)右值引用的第二個(gè)printreference過(guò)載時(shí),右值將首先綁定到第二個(gè)printreference。這一點(diǎn)可以通過(guò)以下代碼驗(yàn)證:輸出是:
~]=和*=具有相同的含義,只是一個(gè)乘法和一個(gè)加法。
讓我們首先解釋=和的含義,這意味著左值和右值相加,結(jié)果分配給左值。例如,在a=1b=2A=B之后,a=3B=2。a的值是2。在C中,有介詞和后置詞,如AA。單獨(dú)使用時(shí),沒(méi)有區(qū)別。它們都是自加1。有手術(shù)就有區(qū)別。介詞自加1后參與運(yùn)算,后置詞自加1后參與運(yùn)算。例如,假設(shè)a=1,B=2,a=B意味著B=2首先參與a=B運(yùn)算,a=3,然后B加1,B=3;如果B被B代替,a=B意味著B首先加1,B=4,然后參與a=B運(yùn)算,a=4。