李洋瘋狂C語言之關於自增自減遇到的一些問題

2021-08-03 18:52:00 字數 1300 閱讀 9601

今天講到自增的時候,遇到個難點,單個的自增自減運算還是挺簡單的,但是如果是多個自增自減,就會變得比較麻煩,在windows環境和linux環境中也會得到不一樣的結果,windows中比較簡單,他會將所有字首自增(減)運算完,再運算整個算式,而在linux中分成2類:

1.單一字首或字尾的情況

1.1 先統一取值後依次自增或自減。如:

#include 

int main()

其運算規律是先對所有的i++統一取值5,然後 i 依次自增3次, 即 a = 5+5+5 = 15, i = 5+1+1+1 = 8.

程式輸出結果為:a = 15, i = 8.

1.2 再比如自增自減混合的:

#include 

int main()

其運算過程為:a = 5+5+6+5 = 21,

i = 5-1+1+1-1 = 5.因此,程式的輸出結果為:a = 21, i = 5

2.前字尾混合的情況

2.1 一般情況:表示式中自左向右計算,函式引數列表中自右向左運算。字首自增(減)後取值;字尾(或變數)取值以其所處位置而定。

#include 

int main()

其運算過程為:a = 7+7+7+7+8 = 36.

i = 5+1+1+1+1+1 = 10。因此,程式的輸出結果為:a = 36, i = 10.

2.2 而當自增(減)出現在函式表示式的引數列表中,它的計算方法與作為普通語句的計算結果是完全不同的。因此,如果函式有多個引數,則引數自右向左計算,如:

#include 

int main()

其運算過程為:先計算 (i++) * (++i)為36,再計算 –i 結果為 5。因此,程式輸出結果為5, 36。

再例如:

#include 

int main()

計算過程為7+7+8+8+9+10 = 49,因此,程式輸出結果為49.

2.3 函式引數中有括號時,括號引數優先計算,其餘引數仍自右向左計算,如:

#include 

int main()

其運算過程先計算括號中的值,然後在++i, i 這兩個引數中,自右向左計算,即先計算i,再計算++i,因此,程式的輸出結果為8, 11, 10。

C語言自增自減

i,i 使用i之前,先使i的值加 減 1。i i 使用i之後,再使i的值加 減 1。其中 i和i 的作用相當於i i 1。但是 i和i 不同之處在於 i是先執行i i 1後,再使用i的值 而i 是先使用i的值後,再執行i i 1。例如 i 6a i i的值先變成7,再賦值給a,a的值才為7 b i ...

C語言 自增( ) 自減( )運算

1.作用 自增運算使單個變數的值增 自減運算使單個變數的值減 2.用法與運算規則 自增 自減運算子都有兩種用法 1 前置運算 運算子放在變數之前 變數 變數 先使變數的值增 或減 然後再以變化後的值參與其它運算,即先增減 後運算。2 後置運算 運算子放在變數之後 變數 變數 變數先參與其它運算,然後...

C語言自增和自減

乙個整數型別的變數自身加 1 可以這樣寫 a a 1 或者 a 1 不過,c語言還支援另外一種更加簡潔的寫法,就是 a 或者 a 這種寫法叫做自加或自增,意思很明確,就是每次自身加 1。相應的,也有a 和 a,它們叫做自減,表示自身減 1。和 分別稱為自增運算子和自減運算子,它們在迴圈結構中使用很頻...