運算子優先順序,自增 ,自減 ,題

2021-08-15 06:08:32 字數 692 閱讀 6768

初始化`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 執行...