簡體   English   中英

c = a +++ b運算是什么意思?

[英]What does the operation c=a+++b mean?

以下代碼使我感到困惑

int a=2,b=5,c;
c=a+++b;
printf("%d,%d,%d",a,b,c);

我期望輸出為3,5,8,主要是因為a ++的意思是2 +1等於3,而3 + 5等於8,所以我期望3,5,8。 原來結果是3,5,7。 有人可以解釋為什么會這樣嗎?

它的分析為c = a++ + b ,和a++裝置后增量,取的值后,即增量a來計算a + b == 2 + 5

不要寫這樣的代碼。

最大蒙克規則適用於此類表達式,根據該表達式,表達式被解析為:

c = a++ + b;

即, a是后遞增( a++ )等的當前值a (前后增量)被取為+與操作b

a ++是遞增的,即表達式使用a的值, 然后加 1。
c = ++ a + b可以滿足您的期望。

這是不良編程風格的一個示例。

這是相當不可讀的,但是它增量后a所以總結的當前值ab ,之后增加a

在表達式之后對a ++求值。

c = ++ a + b; 會給你你的想法。

在表達式中計算a的值后,后遞增運算符a ++更改a的tge值。 由於a的原始值為2,因此用於計算c。 在評估++之后,更改a的值以反映新值。

a ++ + b ..it給出結果7,由於后置增量運算符,a的表達式值更新為3之后

根據最長匹配規則,在編譯器的詞法分析階段將其解析為a ++ + + b。 因此,結果輸出。

這里c = a +++ b; 表示c =(a ++)+ b; 即發布增量。 在a ++中,將在下一步打印a,b和c時進行更改。 在++ a中,即前綴遞增,更改將在同一步驟中發生,並且輸出為8。

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM