復合運算子可能產生的結果

2021-08-24 22:24:56 字數 843 閱讀 6852

原題: c語言程式設計_現代方法, 第四章練習題10.

表示式(i++) + (i--)共有多少種可能的值, 假設i初始值為1

影響結果的因素: 雙目運算子的兩個運算元表示式優先順序沒有在標準c中定義, 所以, 針對不同實現(不同的編譯器)可能會產生不同結果

字尾自增運算子的運算機制: 標準c沒有定義字尾自增運算子具體的運算時機, 但是, 能夠保證在下乙個表示式運算之前, 使其值自增.

需要理解的概念: 任何乙個運算元自身也是乙個表示式.

因此, 在(i ++) + (i --)這個表示式中, 可能產生不同的因素只有雙目運算子+乙個.

結果1: 雙目運算子左運算元表示式首先進行運算.

i ++ = 1

i = 2 /*在+號右運算元(i --)運算之前, i完成左運算元指定的自增.*/

i -- = 2

i = 1 /*在雙目操作符+號運算之前, i完成右運算元指定的自增*/

(i ++) + (i --) = 1 +2 = 3;

結果2: 雙目運算子右運算元表示式首先進行運算.

i -- = 1

i = 0 /*在+號做運算元(i ++)運算之前, i完成右運算元指定的自增.*/

i ++ = 0

i = 1 /*在雙目操作符+號運算之前, i完成左運算元指定的自增*/

(i ++) + (i --) = 1 + 0 = 1;

兩種可能產生的結果中, 在運算完成後, i的值都是1, 因為在表示式中, 有***的++和--會互相"抵消".

暫時的理解就是這些, 如果還有可能產生不同結果的其他影響因素, 請看到的朋友mailto: [email protected] 交流學習.

JAVA中的復合運算子,關係運算子,邏輯運算子

復合運算子 加等於 減等於 除等於 乘等於 取餘等於 意思就是拿變數本身的值去運算,再把運算結果賦給該變數 由上例子可以看出,該運算是自動強制轉換回原來的資料型別的運算方式 關係運算子 大於 小 大於等於 小於等於 不等於 等於 與數學裡的用法一樣,返回的值為 true後者false 邏輯運算子 與...

復合賦值運算子 計算的結果一定正確嗎?

接下來是計算 s1 和 s2 的 和值,會發現第乙個方法的計算結果為負數,第二個是正確的。test public void test13 但是把 稍微修改下結果就正確了 test public void test12 解釋下原因 因為在執行 s1 s2時,由於計算結果超出了 short 的取值範圍,...

多個值參與 與運算子 或運算子的結果解析

之前遇到過這樣的函式 functiona 查了一下資料 或運算子 做了如下的事情 換句話說,就是返回第乙個遇到的真值,如果不存在真值,則返回最後乙個值 舉例 alert 1 0 返回1,1是第乙個遇到的真值 alert 0 false undefined true 返回true,true是第乙個遇到...