日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國(guó)內(nèi)最全I(xiàn)T社區(qū)平臺(tái) 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當(dāng)前位置:首頁(yè) > php開源 > php教程 > 指針和指針運(yùn)算符一起時(shí)的運(yùn)算規(guī)則(比如*p++和*++p的區(qū)別)

指針和指針運(yùn)算符一起時(shí)的運(yùn)算規(guī)則(比如*p++和*++p的區(qū)別)

來源:程序員人生   發(fā)布時(shí)間:2014-10-08 12:11:35 閱讀次數(shù):3999次

接下來,通過示例徹底理解自增運(yùn)算符的兩種用法(自減的用法與之類似,只不過是加1變成了減1)。

    1、++i和i++的區(qū)別

    如清單1(注意代碼中的注釋): 

[cpp] view plaincopy
  1. #include <stdio.h>  
  2.   
  3. int main(void)  
  4. {  
  5.     int a, b, i = 7;  
  6.   
  7.     i++; //等價(jià)于i = i + 1;  
  8.     ++i; //等價(jià)于i = i + 1;  
  9.   
  10.     a = i++; //等價(jià)于a = i; i = i + 1;  
  11.     b = ++i; //等價(jià)于i = i + 1; b = i;  
  12.       
  13.     printf("a = %d, b = %d ", a, b);  
  14.       
  15.     return 0;  
  16. }  

    例子輸出結(jié)果: 

[cpp] view plaincopy
  1. a = 9, b = 11  

    在例子中,第7和第8行的作用一樣,僅僅是為變量i加1,這時(shí)i的值已經(jīng)增加為9,接下來第10行變量a先獲得i的值(即9),然后i加1,第11行變量i先再加1,然后把得到的值賦給b,所以b的值為11。

    稍微復(fù)雜的例子,如清單2: 

[cpp] view plaincopy
  1. #include <stdio.h>  
  2.   
  3. int main(void)  
  4. {  
  5.     int a = 5;  
  6.   
  7.     int *p = &a;  
  8.   
  9.     int b = (*p)++; //等價(jià)于b = a++; 即b = a; a = a + 1;  
  10.   
  11.     int c = ++(*p); //等價(jià)于c = ++a; 即a = a + 1; c = a;   
  12.       
  13.     printf("b = %d, c = %d ", b, c);  
  14.   
  15.     printf("(*p)++ = %d, ++(*p) = %d ", (*p)++, ++(*p));  
  16.   
  17.     return 0;  
  18. }  

    例子輸出結(jié)果: 

[cpp] view plaincopy
  1. b = 5, c = 7  
  2. (*p)++ = 8, ++(*p) = 8  

    在這個(gè)例子中,只不過是通過*p來間接地操作a,其他關(guān)于自增運(yùn)算符的用法與清單1類似。第9行的*p一定要用小括號(hào)括起來,否則含義就不一樣了。而第11行的++(*p)也可以寫成++*p(用GCC驗(yàn)證過),那是因?yàn)閷?duì)操作數(shù)p來說它只有一個(gè)運(yùn)算符*在計(jì)算它,所以無關(guān)乎運(yùn)算符優(yōu)先級(jí)和結(jié)合性的問題。

    值得注意的是,由于C語(yǔ)言沒有指定函數(shù)各參數(shù)的求值順序,所以第15行的代碼是不可移植的,用不同的編譯器可能會(huì)產(chǎn)生不同的結(jié)果(對(duì)于這個(gè)例子,GCC是先計(jì)算++(*p),后計(jì)算(*p)++,所以兩者都等于8)。

    知識(shí)點(diǎn):

    (1)、副作用

    在對(duì)表達(dá)式求值的同時(shí),修改了某些變量的值,其中修改值的行為在C語(yǔ)言中被叫作副作用,那是因?yàn)閷?duì)C語(yǔ)言而言,計(jì)算的目的就是對(duì)表達(dá)式求值,如語(yǔ)句int a = 5,它的含義是先求值得到5,然后把5賦值給變量a,后一步的賦值就是此表達(dá)式的副作用。自增和自減運(yùn)算符就是因?yàn)楦弊饔枚皇褂?,除了?或減1之外,還給自身賦值。

    (2)、運(yùn)算符的優(yōu)先級(jí)

    在C語(yǔ)言中,把運(yùn)算符的優(yōu)先級(jí)分為15級(jí),如下表,從上到下,依次為從最高優(yōu)先級(jí)到最低優(yōu)先級(jí)(為了方便記憶,將15級(jí)分成11類,并對(duì)每類進(jìn)行了命名)。

初等運(yùn)算符

包括小括號(hào) ()、中括號(hào) [] 、成員訪問運(yùn)算符 . 和 -> 。

一元運(yùn)算符

包括自增++和自減--、正負(fù)號(hào)+ 和-、間接運(yùn)算*和取址運(yùn)算& 、類型轉(zhuǎn)換(type)、 sizeof 、邏輯反! 、位取反~等。

算術(shù)運(yùn)算符

包括兩級(jí),先乘除(*、/、%)后加減(+、-)。

位移運(yùn)算符

包括左移 << 和右移 >> 。

關(guān)系運(yùn)算符

包括小于 < 、小于等于 <= 、大于 > 、大于等于 >= 。

判等運(yùn)算符

包括相等 == 和不相等 != 。

位邏輯運(yùn)算符

分三級(jí),依次為位與 &、位異或 ^ 和位或 | 。

邏輯運(yùn)算符

分兩級(jí),依次為邏輯與 && 和邏輯或 || 。

條件運(yùn)算符

? :

賦值運(yùn)算符

包括= 、+= 、-=、 *=、 /=、 %= 、&= 、^=、 |= 、<<= 、>>= 。

逗號(hào)運(yùn)算符

    (3)、結(jié)合性

    對(duì)于同一操作數(shù),在具有兩個(gè)相同優(yōu)先級(jí)的操作符時(shí)決定先執(zhí)行哪個(gè)操作符的問題就是由結(jié)合性決定的。

    相同優(yōu)先級(jí)的操作符具有同樣的結(jié)合性。右結(jié)合性就是說表達(dá)式中最右邊的操作最先執(zhí)行,然后從右到左依次執(zhí)行。在C語(yǔ)言中,具有右結(jié)合性的操作符只有相應(yīng)的三類,分別為一元運(yùn)算符、條件運(yùn)算符和賦值運(yùn)算符。

    注意:C語(yǔ)言中的優(yōu)先級(jí)和結(jié)合性都是針對(duì)同一操作數(shù)而言的。如表達(dá)式24/8*2,對(duì)于操作數(shù)8而言,/ 和*的優(yōu)先級(jí)相同,所以再根據(jù)它們的左結(jié)合性可知,表達(dá)式是先計(jì)算24/8得到3,然后計(jì)算3*2得到6。

    C語(yǔ)言并沒有規(guī)定同一運(yùn)算符相關(guān)的多個(gè)操作數(shù)的計(jì)算順序(&&、|| 、? : 和 , 運(yùn)算符除外),如式子a = 8 * 9 + 20 * 4,對(duì)操作數(shù)9和20而言,根據(jù)優(yōu)先級(jí)就可判斷先乘后加,但表達(dá)式中的兩個(gè)*并不共享同一操作數(shù),所以從左到右的結(jié)合性并不適用它,8 * 9 和20 * 4的計(jì)算順序是不定的,到底先計(jì)算8 * 9還是20 * 4由編譯器決定。

    在上面例子中,8 * 9和20 * 4誰(shuí)先執(zhí)行都不影響最后結(jié)果的一致,但有些情況下就未必了,如“ b = 3; a = (b++) * (b++); ”這樣的例子,對(duì)于不同的編譯器最后a的值可能等于9,也可能等于12,甚至可能等于16。因此,在實(shí)際應(yīng)用中不能出現(xiàn)這樣的未確定性,根據(jù)自己的需要,可以把它改成類似“b = 3; c = b++; a = c * c;”這樣的形式。

    2、*p++和*++p的區(qū)別

    舉例,如清單3: 

[cpp] view plaincopy
  1. #include <stdio.h>  
  2.   
  3. int main(void)  
  4. 生活不易,碼農(nóng)辛苦
    如果您覺得本網(wǎng)站對(duì)您的學(xué)習(xí)有所幫助,可以手機(jī)掃描二維碼進(jìn)行捐贈(zèng)
    程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: 99免费视频 | 亚洲精品网站在线 | 成人免费毛片aaaaaa片 | 亚洲网站在线观看 | 日韩国产精品一区二区 | 日韩精品久久久久久久软件91 | 完全免费在线视频 | 日韩欧美专区 | 亚洲成人免费电影 | 国产欧美一区二区三区在线看蜜臀 | 成人黄色在线 | 中文字幕日本在线观看 | 成人av影视在线 | 亚洲www啪成人一区二区麻豆 | 播放日韩一级黄色片 | 久久国产精品视频 | 成人性生交大片免费看在线播放 | 中文字幕在线一区二区三区 | 久久精品影视 | 久久久在线免费观看 | 久久久精品 | 中文字幕www | 麻豆激情| 在线观看中文字幕av | 成人资源在线观看 | 国产 日韩 一区 | 亚洲视频免费在线观看 | 午夜久久网站 | 最新国产在线视频 | 久久久久久久国产精品视频 | 69av在线视频| 欧美视频区 | 一本色道精品久久一区二区三区 | 人人澡人人添人人爽一区二区 | 日韩av免费| 黄色的网站在线观看 | 亚洲欧美激情视频 | 一区二区国产精品 | 久久伊人精品视频 | 欧美日韩精品免费观看 | 99久久久久久 |