国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

在程序開發(fā)中,++i 與 i++的區(qū)別在哪里?

2019-11-10 22:49:09
字體:
供稿:網(wǎng)友

(原地址:https://www.zhihu.com/question/19811087)

問題:

在程序開發(fā)中,++i 與 i++的區(qū)別在哪里?

解答:

i++ 與 ++i 的主要區(qū)別有兩個:1、 i++ 返回原來的值,++i 返回加1后的值。2、 i++ 不能作為左值,而++i 可以。毫無疑問大家都知道第一點(不清楚的看下下面的實現(xiàn)代碼就了然了),我們重點說下第二點。首先解釋下什么是左值(以下兩段引用自中文維基百科『右值引用』詞條)。左值是對應(yīng)內(nèi)存中有確定存儲地址的對象的表達式的值,而右值是所有不是左值的表達式的值。一般來說,左值是可以放到賦值符號左邊的變量。但能否被賦值不是區(qū)分左值與右值的依據(jù)。比如,C++的const左值是不可賦值的;而作為臨時對象的右值可能允許被賦值。左值與右值的根本區(qū)別在于是否允許取地址&運算符獲得對應(yīng)的內(nèi)存地址。比如,
int i = 0;int *p1 = &(++i); //正確int *p2 = &(i++); //錯誤++i = 1; //正確i++ = 5; //錯誤那么為什么『i++ 不能作為左值,而++i 可以』?看它們各自的實現(xiàn)就一目了然了:
// 前綴形式:int& int::Operator++() //這里返回的是一個引用形式,就是說函數(shù)返回值也可以作為一個左值使用{//函數(shù)本身無參,意味著是在自身空間內(nèi)增加1的  *this += 1;  // 增加  return *this;  // 取回值}//后綴形式:const int int::operator++(int) //函數(shù)返回值是一個非左值型的,與前綴形式的差別所在。{//函數(shù)帶參,說明有另外的空間開辟  int oldValue = *this;  // 取回值  ++(*this);  // 增加  return oldValue;  // 返回被取回的值}如上所示,i++ 最后返回的是一個臨時變量,而臨時變量是右值
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 武山县| 太保市| 高安市| 会昌县| 海兴县| 烟台市| 舞钢市| 佛冈县| 天台县| 汶川县| 老河口市| 邹平县| 池州市| 河津市| 洪雅县| 利辛县| 建始县| 固阳县| 肥城市| 托里县| 荥阳市| 临朐县| 衢州市| 浠水县| 汉川市| 柘城县| 孝昌县| 山西省| 齐齐哈尔市| 惠水县| 成武县| 石泉县| 延吉市| 海门市| 祥云县| 巨鹿县| 中阳县| 晋城| 丰都县| 邹城市| 贡山|