老師1-7-3的例子a=5輸出時不應(yīng)該直接輸出么,為什么會聯(lián)系到++
![]() ![]() 學(xué)習(xí)達(dá)人
|
T549539ov
展開
|
![]() ![]() 學(xué)習(xí)達(dá)人
|
caojiemxd
展開
#include<stdio.h>
main(){
int a;
a=5;
a++;
printf("%d\n",a);
} 這個a是6打印出來,如果把a(bǔ)++換成a=a++那么a打印出來就是5了這個是為什么呢 |
![]() ![]() 學(xué)習(xí)達(dá)人
|
茶茶丸喵
展開
|
![]() ![]() 學(xué)習(xí)達(dá)人
|
茶茶丸喵
展開
int a;a=0;printf("%d%d/n",a++,++a);為什么結(jié)果是12/n[痛苦] ![]() hdylnpu
講師
展開
@ 茶茶丸喵 這組語句歧義的核心在于printf有的系統(tǒng)是從左向右執(zhí)行,有的系統(tǒng)是從右向左執(zhí)行。 ![]() hdylnpu
講師
展開
@ 茶茶丸喵 你好,兩點(diǎn)
一是同樣的代碼,在c-free5中輸出為11。在devc++中輸出為12。這兩個都是特別優(yōu)秀的c編譯軟件。
二是你把\n寫為了/n。
實(shí)質(zhì)上++ --包括+= -=等運(yùn)算符的出現(xiàn)的實(shí)質(zhì)是為了簡化表達(dá)式的書寫。絕對不是為了增強(qiáng)學(xué)習(xí)的難度。在實(shí)用中,通常不會出現(xiàn)在輸出語句中。
而不同的編譯程序?qū)敵稣Z句中的++ --的解釋與執(zhí)行也不是完全相同的。
所以如果您的問題是為什么輸出12,我無法解釋,并且通常也不用于輸出語句中。如果問題是/n,那是你把斜杠用返了。
以上,期望對你有所幫助。 |
![]() ![]() 打卡Lv2
|
歐茶渠晶
展開
int a;a = 6;
printf("%d\n", ++a + a++ + ++a);
printf("%d\n", a);
第一個7+7+9=23 為什么打印出來是24
第二個是9 ![]() hdylnpu
講師
展開
@ 歐茶渠晶 你好,
這里我也弄不太懂。因?yàn)樽罨镜倪\(yùn)算規(guī)則是固定的。但是復(fù)雜表達(dá)式的計(jì)算及處理都是不同軟件開發(fā)團(tuán)隊(duì)自我實(shí)現(xiàn)的。因?yàn)閷?shí)現(xiàn)的算法和程序代碼不一定完全相同,對于這種復(fù)雜的表達(dá)式結(jié)果也是不固定的。比如同樣的表達(dá)式,在C-free中結(jié)果為22。
當(dāng)然對于普通的四則運(yùn)算表達(dá)式,無論哪家都是沒有問題的,但是對于++ --運(yùn)算和指針運(yùn)算等復(fù)雜的計(jì)算處理,有可能會有出入。 |
![]() ![]() 學(xué)習(xí)達(dá)人
|
hdylnpu
講師
展開
|
承擔(dān)因您的行為而導(dǎo)致的法律責(zé)任,
本站有權(quán)保留或刪除有爭議評論。
參與本評論即表明您已經(jīng)閱讀并接受
上述條款。