Posted on 2006-08-04 10:54
一秋草木 閱讀(1179)
評論(0) 編輯 收藏 引用 所屬分類:
C++
先介紹幾個概念:
1
、與數據對象相關的值有兩種:
n????????
數據值
即存儲在某個內存地址中的數據本身。
n????????
地址值
即該數據對象的存儲位置。
2
、
lvalue
與
rvalue
n????????
lvalue
通常指的是可以尋址并且可以對該地址內容存儲的對象進行寫操作
(writeable)
。可以看作
location value
。
n????????
rvalue
通常指的是那些能夠提供數據值的數據,即從某個
mem
中讀出的
value
。可以認為是
read value
。
3
、文字常量(
literate const
)與變量(
variable
)
n????????
文字常量
即通常指的數字(
1
,
200
,。。。)。該數據對象分配在常量內存區域,不可以尋址,也就是不可以通過操作它的地址值來變更的數據對象。因此不能作為
lvalue
出現,只能是
rvalue
n????????
變量
可以尋址。通過變量名就可以改變該數據地址的內容。所以可以成為
lvalue
、
rvalue
?
總結:
u??????
lvalue
:可以通過數據對象自身地址來改變數據對象值的數據對象,要求該對象可以尋址。
u??????
rvalue
:能夠提供數據對象本身數值的數據對象,該對象不一定可以尋址
u??????
由操作符決定需要什么類型的數據值類型
?
注意:
lvalue
中的
’l’
不是
left
的意思,既不是指在操作符左邊。同樣
’r’
不是
right
??????
例如:
x++;
?????? ++x;
??????
兩個表達式均要求
x
是
lvalue
。
?
使用舉例:
①.????
0=1
;
??????????? //error, 0
不是
lvalue
②.????
x+0.1*y=z;???? //error,
在賦值運算符左邊的應該為
lvalue
③.????
const int size=4;
size=10;???????? //error,
數據對象地址內容不可以改變,即不是
writeable