1. 概念
變量和文字常量都有存儲區(qū),并且有相關(guān)的類型,區(qū)別在于變量是可尋址的;
對于每個變量,都有2個值與其相關(guān)聯(lián):
1>數(shù)據(jù)值,存儲在某個內(nèi)存地址中,也稱右值(rvalue),右值是被讀取的值(read value),文字常量和變量都可被用于右值。
2>地址值,即存儲數(shù)據(jù)值的那塊內(nèi)存地址,也稱左值(lvalue),文字常量不能被用作左值。
2 . 問題
給表達(dá)式加上括號:
++a--
結(jié)果 ++(a--)
這個表達(dá)式是非法的,因為前增量操作要求一個可修改的左值,而 "a--" 不是左值(即右值)
3 . 前增量和后增量的區(qū)別
早期的c語言教材,for循環(huán)語句通常寫成:
for(int i=0;i<10;i++)
而現(xiàn)在多為:
for(int i=0;i<10;++i)
兩者有區(qū)別嗎?
a++ 即是返回 a的值,然后變量 a 加 1,返回需要產(chǎn)生一個臨時變量類似于
{
int temp = a;
a=a+1;
return temp; //返回右值
}
++a 則為:
{
a=a+1;
return &a; //返回左值
}
顯然,前增量不需要中間變量,效率更高。