第一段代碼:
創(chuàng)新互聯(lián)主營蘇尼特右網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,成都app開發(fā),蘇尼特右h5微信平臺小程序開發(fā)搭建,蘇尼特右網(wǎng)站營銷推廣歡迎蘇尼特右等地區(qū)企業(yè)咨詢
++i是先增加i的值,然后使用。
p=f(i,++i); 是先執(zhí)行++i,后進行函數(shù)調(diào)用。因為執(zhí)行了++i以后,i的值已經(jīng)變成了3,
所以相當(dāng)于p=f(3,3);
你可以在函數(shù)f里面把a和b的值打印出來,你會發(fā)現(xiàn)a和b都是3.
第二段代碼:
i++是先使用i的值,然后把i的值加1.
所以相當(dāng)于先執(zhí)行p=f(2,2);
執(zhí)行之后,把i的值變成3.答案應(yīng)該是0.
我懷疑你們老師的課件寫錯了,建議你去問問他。
(1)printf("%d", i++); 后綴,表達(dá)式里用 i, 出了表達(dá)式 自增1,故,分解為: printf("%d", i); i=i+1;
(2) printf("%d", ++i); 前綴,先自增,后用于表達(dá)式,故,分解為: i=i+1; printf("%d", i);
(3)(4) 同理,printf("%d", i--); 分解為:printf("%d", i); i=i-1;
printf("%d", --i); 分解為: i=i-1; printf("%d", i);
把分解后的語句組合起來,就可看出,輸出為 40 42 42 40
編譯器的不同 結(jié)果可能不同~~
p(i,++i)
有的傳遞的參數(shù)是2,3
有的傳遞的參數(shù)是3,3
運算順序從左至右和從右至左~~
如果傳遞的參數(shù)是2,3 那么返回值為-1 如果傳遞的參數(shù)是3,3 那么返回0
x=5
-----
++x 6 x=6
--x 5 x=5
x++ 5 x=6
x-- 6 x=5
-x++ -5 x=6
-x-- -6 x=5
-----
我們把它們當(dāng)成函數(shù)調(diào)用的形式來看,會比較好理解。i做為參數(shù)傳入,
在(++i,--i中,++,--做為前綴運算符),表達(dá)式的值為i+1或i-1.返回值為i+1或i-1.
在(i++,i--中,++,--做為后綴運算符),表達(dá)式的值為i,返回值為i+1或i-1.
看到有什么不同了嗎?
在++,--做為前綴運算符式,改變表達(dá)式的值,而作為后綴運算符時,表達(dá)式值不變。
共同點是,無論做前綴或后綴,返回值都自加或自減。
---------------------
....
int x=5; // x初始化值為5
printf("%d,",++x); // x=5,打印++x的值,++x的值為x+1 (5+1=6),返回值x+1,x=6
printf("%d,",--x"); // x=6,打印--x的值,--x的值為x-1 (6-1=5),返回值x-1,x=5
printf("%d,",x++); // x=5,打印x++的值, x++的值為x (5) ,返回值x+1,x=6
printf("%d,",x--); // x=6,打印x--的值, x--的值為x (6) ,返回值x-1,x=5
printf("%d,",-x++); // x=5,打印-x++的值, x++的值為x (5) -x=-5 ,返回值x+1,x=6
printf("%d,",-x--); // x=6,打印-x--的值, x--的值為x (6) -x=-6 ,返回值x-1,x=5
【表達(dá)式的值】 【返回的值】
....
ps:表達(dá)式的值和返回的值是兩個概念,-x++,-x--可看做-(x++),-(x--).++,--的優(yōu)先級高于+,-
C語言中區(qū)分前自增與后自增,它們都有副作用,尤其是后自增。
前自增可能更好一點,它不產(chǎn)生臨時變量,效率更高一些。
++y相當(dāng)于:y=y+1;在變量的使用之前先自增。
y++相當(dāng)于:y; 其它語句... y=y+1;也就是使用它時,它的值不變,在其使用之后的某一時刻但在再次使用它前其值加一。而且不同的編譯器不一定有一致的實現(xiàn)行為。
a=(y++)+(y++)+(y++) 這是一條語句,通常的編譯器實現(xiàn)會將此語句一次性掃描完成。這種情況下,y++會保持其值不變,此語句完成后,將y的值遞增3次。
網(wǎng)站題目:C語言自增符號做函數(shù)參數(shù) C語言中自增
轉(zhuǎn)載來源:http://m.kartarina.com/article12/dodsigc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信公眾號、手機網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計公司、微信小程序、軟件開發(fā)、響應(yīng)式網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)