對左值和右值的理解

2021-06-29 03:47:00 字數 386 閱讀 4759

來自:

今天在csdn上看到乙個關於左值和右值討論貼,順便說下自己的理解

左值:必須要有明確的名字來代表這個值;

右值:如果沒有明確的名字來代表這個值,那麼這個就是只能是右值;

舉例:

int a=1;

a,a=2,++a都可以是左值;

而1,a++就不能作為左值,只能是右值;

關於a++,++a:

a++:

是先取a的乙個副本,然後將a加1,再將之前的副本返回,因此a++返回的數值並沒有乙個明確的名字來代表,所以不能作為左值;

++a:

是對a加1,然後將加1後的a返回,很明顯有乙個明確的名字a,所以可以作為左值;

左值和右值,左值引用和右值引用

左值 lvalue 這一術語 於c語言,用來指代那些可以用在賦值表示式左側的東西,具名物件 在棧和堆上分配的物件,或者其他物件的成員,總之就是又確定儲存空間的東西。而術語右值 rvalue 也是源自c語言,指的是只能在賦值表示式右側出現的東西,如字面值和臨時物件。只能繫結到左值,不能繫結到右值的引用...

左值和右值

c c 語言中可以放在賦值符號左邊的變數,即具有對應的可以由使用者訪問的儲存單元,並且能夠由使用者去改變其值的量。或者說左值是代表乙個記憶體位址值,並且通過這個記憶體位址,就可以對記憶體進行讀並且寫 主要是能寫 操作 這也就是為什麼左值可以被賦值的原因了。相對應的還有右值 當乙個符號或者常量放在操作...

左值和右值

參考 左值就是在賦值中可以放在賦值操作符兩邊的值,比如 int a 1 double b 2.0 a b b a 這裡a和b都是左值,一切變數都是左值,但const量是例外。而右值則是只可以放在賦值操作符右邊的值,比如 int a 0 char b hello 3 a error howdy b e...