c 引數傳遞順序與自加運算的問題,int a 0 printfd d da,aa 的結果為434,請問為什麼

時間 2021-08-11 17:36:13

1樓:匿名使用者

語句內部的自加、自減運算在不同的編譯平臺上的實現是各不相同的,這是因為ansi和iso都沒有給出具體要求,但當一個語句執行完成後,作為“附加效應”也必須完成,這是所謂的“時間點”,可參閱《c缺陷與陷阱》。

2樓:匿名使用者

剛根據你的問題做了一個測試,感覺很神奇

#include

void func(int a,int b,int c,int d,int e)

void main()

輸出結果是

4 3 4 4 1

從這個結果看,引數確實是從右往左進行的(不然最後的1怎麼解釋...)由結果看,運算子++應該是最早執行的

當遇到a++,把此時a的值傳遞到引數中就自增當++a,它會自增但是沒有傳參

最後所有運算完成後再依次從右往左傳參壓棧

以上結果屬於推測,你可以做做測試哦

3樓:觀音大_溼

是誰說的結果為434、433 ,你運算過嗎?我便宜執行明明為101. 從結果看原因應該是先計算的a++的值為0,計算完後a的值就變成1了,所以結果為101.

4樓:雨中抬頭

如果a=0的話,答案應該是100,因為根據vc編譯器的特點是後進先出的入棧特點,於是,進的時候,是001,出棧就變成100了~樓主的**應該是抄錯了,結果是433的話,a不可能是0,肯定是3~

就說這麼多了,其實這些都是很簡單的東西,只要自己編譯一下就能推出原因了~

C語言中自加與自減運算子前置與後置結果為什麼有時一樣有時不一樣啊,怎麼區別

智慧型it人生 這個要看你所用的編譯環境了,不同的編譯環境執行的順尋不一樣一般情況下是 如 i,i.在使用i之前,先使i的值加 減 1i i 在使用i之後,使i的值加 減 1 如 i,i.在使用i之前,先使i的值加 減 1 i i 在使用i之後,使i的值加 減 1 想得到正確答案,請提供詳細 c語言...

c語言裡關於自增自減運算子的問題

金色潛鳥 字首加 減 與 字尾加 減 的不同 在於表示式 裡 的 值。表示式 裡,字首加 要先自增,後使用。表示式 裡,字首減 要先自減,後使用。表示式 裡,字尾加 要先使用原值。出了表示式後 再自增。表示式 裡,字尾減 要先使用原值。出了表示式後 再自減。a i 字首加 要先自增,後使用。執行 i...

C 問題 沒有與這些運算元匹配的《運算子

會飛的小兔子 include include缺少這句將會報錯。usingnamespacestd classstudent public voidget value cout pleasekeynum 001 999 name,m f cin num name voiddisplay cout nu...