初始化`int`型別變數`a`、`b`、`c`都為`2`,那麼經過以下運算之:
a = a+a++;
b = b+++b;
c = ++c+c;
三個的值分別為多少?
答案:4;5;6
解析:關於自增`++`的解釋:
`a++`和`++a`,`++a`是先自增,然後進行其他運算,而`a++`是`a`先進行其他運算,然後自增。注意`a++`和`++a`運算物件都是左運算元,使可變左值加`1`。
在同一表示式中,語義分析是按照順序進行,並將變數值作為運算元,以值形式快取起來。
那麼```
a = a+a++; //a值為2,那麼第乙個運算元值為2;a++中的a會與左運算元2進行+運算,結果是4;a++自增1,a值為3;4又重新賦值給a,a值為4。
b = b+++b; //b++或++b兩種。第一種b++,b值為2,b++沒有左運算元;右運算元快取為2;b++自增1,b值為3;先進行+運算,結果為5;第二種,++b,b值為2,那麼第乙個運算元值為2;右側b先自增加1,右側運算元值為3,然後與左運算元2進行+運算,b結果是5。
c = ++c+c; //因為++操作物件必須是變數,所以(++c)+c。++c之後,第乙個運算元為3,c值為3,第二個運算元也為3;所以c值為6;
```注:這道題會涉及到暫存器和組合語言,使用vs本地除錯的時候,在debug除錯窗
自增自減運算子
自增自減運算子 i 先使用i,然後i i 1 i 先使用i,然後i i 1 i 先i i 1然後使用i i 先i i 1 然後使用i 以下使用vc下除錯的結果,不同的編譯器可能有不同的結果。i 3 例1printf d i 結果輸出4 例2printf d i 結果輸出3 例3printf resu...
自增 ,自減 運算子
自增1運算子記為 其功能是使變數的值自增1。自減1運算子記為 其功能是使變數值自減1。自增1,自減1運算子均為單目運算,都具有右結合性。可有以下幾種形式 i i自增1後再參與其它運算。i i自減1後再參與其它運算。i i參與運算後,i的值再自增1。i i參與運算後,i的值再自減1。在理解和使用上容易...
自增和自減運算子
自增和自減運算子 在c語言中有許多運算子,邏輯運算,賦值運算,關係運算 其中最難理解的莫過於自增 和自減 運算了。自增 自減 有兩種方式,下面分別進行分析。1 在前。i i 其用法是在整個表示式運算之前先進行自增 自減 運算,然後再進行表示式運算。例如進行如下計算 intx y x 8 y x 執行...