c語言中自加自減運算子前後位置的區別

2021-03-07 16:35:53 字數 2489 閱讀 7625

1樓:匿名使用者

嗯,自加(自減)從結果上來看都是加1(減1),這點肯定沒錯。但是用在表示式中就會有差別了,拿你的例子來說i=5,如果執行下面的語句:

int b = i++;

結果b的值就是5,i的值變為6;

如果是b=++i

那麼b的值就是6,i的值也是6;

所以i++與++i使用在表示式中的時候的區別就是:前者是先使用i的當前值進行計算,再加1;而後者是先加1再進行計算,自減運算也是一樣的。

不知道我說的清楚不

2樓:du瓶邪

以自增運算子為例,當自增運算子++作用於一個變數時例如:當i=3時++i這個算術表示式的值為4,同時變數i的值也由原來的3改變為4。

一般情況下,計算表示式後不改變變數本身的值,而++運算子和--運算子組成的表示式計算後,則改變變數的值,這稱為運算子的***。

這類運算子在計算表示式時,一定要注意區分表示式的值和變數的值。

3樓:匿名使用者

如果是這樣,int,i=5 , j=6 , n

n=i*j 如果是i++那n=31,如果是++i就是36,i++是先運算再自曾,相反先自增在運算,i--相同。

c語言中關係運算子和自加自減運算優先順序哪個高

4樓:仁昌居士

各種運算子間的優先順序從高到低為數值運算子、字串運算子、關係運算子、邏輯運算子。可以用括號改變優先順序順序,使得括號內的運算優先於括號外的運算。對於多重括號,總是由內到外強制表示式的某些部分優先執行。

自加自減運算子屬於數值運算子,優先順序比關係運算子高。

5樓:唯指間流年

不知道現在看到是不是有點遲了,自加的優先順序是要高於關係運算子的,這裡是++y所以首先應該先給y+1再判斷y+1和2的大小,但如果是y++的話就要先判斷y和2的大小,然後再給y+1

6樓:你猜我猜哇擦猜

以自增運算子為例,當自增運算子++作用於一個變數時例如:當i=3時++i這個算術表示式的值為4,同時變數i的值也由原來的3改變為4。

一般情況下,計算表示式後不改變變數本身的值,而++運算子和--運算子組成的表示式計算後,則改變變數的值,這稱為運算子的***。

這類運算子在計算表示式時,一定要注意區分表示式的值和變數的值。

c語言裡自加++和自減——放變數前和變數後有什麼不同作用啊,分別怎麼計算的?

7樓:匿名使用者

運算子在前,表示運算在前取值在後;運算子在後,表示運算在後取值在前c語言是程序式程式設計語言。不同於「純」函數語言程式設計語言,c語言的表示式可以改變變數的值或外部狀態,這被稱為表示式的「***」(side effect)。++i 就是含有***的表示式,在對 ++i / --i 這樣的字首運算子(prefix increment and decrement operators)求值的過程中,按定義發生了以下兩步

改變變數 i 的值

確定運算結果是變數 i 改變後的值

而在對 i++ / i-- 這樣的字尾運算子(postfix increment and decrement operators)求值的過程中,則是以下兩步

確定運算結果是變數 i 的值(此時 i 的值還沒有改變)改變變數 i 的值

8樓:匿名使用者

跟優先順序有關係例如 int a = 1;int b = a++,b就是等於1如果int b = ++a,b就是等於2因為=號的優先順序要高於++,--

9樓:匿名使用者

++(--)放在變數前是先自增(減)再引用反之就是先引用再自增(減)

c語言中自增自減運算子的運算次序?

10樓:匿名使用者

a=a++;

b=++b;

如下圖紅框中所示(gcc編譯時告警),上述兩種用法對編譯器來說是無定義的,

回即是說c語言標準答中沒有規定該怎麼處理,因為實踐過程中也沒人這麼用。

既然沒有標準,又不能說是語法錯誤,那就依賴編譯器實現。a編譯器實現可以讓a = 5,b編譯器實現也可以讓a = 6。因此,在實際專案中,不要寫這樣的語句。

11樓:荌繎丶誑嘢菰漃

後置遞增遞減運

算符,將運算元遞增或遞減1,再將運算元的原值返回,專也就是說有一個臨時

屬變數用來存放原來的值,在完成遞增或遞減操作後,將臨時變數返回。

前置和後置區別就在這,前置返回的是新值,後置返回的是舊值。

12樓:心飛翔

i++是先抄使用i的值,再對i進行加1操作.

所以在p=(i++)+(i++)+(i++)裡面在計算p的值之前,i本身的值總是5.

所以p的值就是3個5所以是15.在運算完p之後,因為有3個i++,所以i做了3次自加運算,所以i最終是8.

q的變化同理.

所以最終列印結果是 15,15,8,8

有關C 自增運算子的問題,C 中自增運算子前後置的問題

1 首先,m的結果應該是19吧,我執行了程式,確實等於19 2 自增運算子屬於單目運算子,而 則為雙目運算子,單目運算子的優先順序要高於雙目運算子,所以,m i j 運算順序相當於m i j 3 i以i 1之後的i值為此表示式的值,i 則以i為表示式的值 4 m i j m i j 9 10 19 ...

c語言中位移位運算子C語言中位移位運算子

位移運算子 符號 描述 左移 右移 位移運算子作用於其左側的變數,其右側的表示式的值就是移動的位數,運算結果就是移動後的變數結果。b a 2 就是a的值左移兩位並賦值為b。a本身的值並沒有改變。向左移位就是在低位補0,向右移位就是在高位上補0。右移時可以保持結果的符號位,也就是右移時,如果最高位為1...

c語言中邏輯運算子用法,C語言中邏輯運算子用法

1 邏輯運算子bai是根據du表示式的值來返zhi回真值或是假值dao。在c語言中沒有專版門的真值和假值,認定權非0為真值,0為假值。2 邏輯運算子運算規則 或 兩個條件中,只要有一個成立,則結果就成立 與 兩個條件中,兩個同時成立,則結果成立,否則不成立 非 取反之意,如果是真,結果是假,如果是假...