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

2022-12-02 20:21:01 字數 3011 閱讀 9374

1樓:

(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;

(5)n=(++i)+(++j)+m = 10 + 12 +19 =41;

2樓:仙戈雅

int i, j, m, n;

i = 8;

j = 10;

m = ++i + j++;   // ++i是前置自增所以是++i變為9  j++是後置自增

// 所以先取前置自增的值9+j本來的值10 m=9+10=19n = (++i) + (++j) + m; // 此時經過上面的自增後i為9,j為11,這裡原理同上,i和j都是前置自增,所以先取++後的值分別為i=10,j=12,m=19 n=10+12+19=41

關鍵要理解透何謂前置自增(減)和後置自增(減)以及它們的區別:顧名思議,前置就是先自增(減)再取出值,後置自增(減)就是先取出值,然後再作自增(減)

3樓:匿名使用者

m=(++i)+(j++)=9+10=19, i=9, j=11

n=10+ 12 + 19 = 41, i=10, j=12

所以答案為: 10,12,19,41

c++中自增運算子前後置的問題

4樓:

第一個是整個式子計算完,i再自增4次。所以是1+1+1+1+自增的4等於8。

第二個是先自增4次,在進行加法運算,所以是5+5+5+5等於20.

5樓:匿名使用者

根據c99標準

在上一個和下一個序列點之間,一個物件所儲存的值至多隻能被表示式的求值修改一次。而且只有在確定將要儲存的值的時候才能訪問前一個值。

像你這個

i=(i++)+(i++)+(i++)+(i++);

在兩個序列點之間有四次讀取,5次修改,iso c明確表示這是無明確定義的行為。也就是說,無需知道它們到底做什麼,編譯器也不必支援它們。

所以首先我們無需關心它到底等於多少,其實即使vs2010給出了一個值,也並不代表它是正確的,不同編譯器給出的值並不相同,甚至兩次執行給出的值也可以不同,即使不給出計算結果,報出異常也是被允許的。

c++有關增量運算子的問題,相關的語句做例子

6樓:

#include

int  fun(int x,int y)int main ()

dev c++,執行結果:

c語言裡關於自增自減運算子的問題

7樓:金色潛鳥

字首加/減 與 字尾加/減 的不同 -- 在於表示式 裡 的 值。

表示式 裡, 字首加 要先自增, 後使用。

表示式 裡, 字首減 要先自減, 後使用。

表示式 裡, 字尾加 要先使用原值。出了表示式後 再自增。

表示式 裡, 字尾減 要先使用原值。出了表示式後 再自減。

a=++i; 字首加 要先自增, 後使用。執行: i=i+1; a=i ; ( i=7; a=7;)

b=i++; 字尾加 要先使用原值。出了表示式後 再自增。執行 b=i; i++; (b=7;i=8)

a=--i; 字首減 要先自減, 後使用。i=i-1; a=i; (i=7;a=7)

b=i--; 字尾減 要先使用原值,執行. b=i.i=i-1; (b=7; i=6)

printf("%d\n",-i++); 字尾加 要先使用原值。出了表示式後 再自增. 列印 -i; (-6) 出了表示式 i=i+1;(i=7)

printf("i=%d\n",i); 列印 i=7

8樓:時尚裝飾萊兒

我在vc6·0上編寫了一下 這是截圖

首先是前兩個7 因為i++是先賦值在進行加一運算,++i是先加一然後再進行賦值操作,所以a,b中儲存著值是7,此時i的值是8

然後是後面兩個7,同理 a為7,b為7,此時i為6同理,-i++中因為++在後面 所以先輸出-6,然後在把i加一 這是i變成了7

最後 根據輸出格式 輸出了  i=7;

9樓:匿名使用者

第一行 i為6 a和b是垃圾值。

第二行a賦予i自增以後的副本a,a為7,而i為7,b被賦給i的副本,b為7,然後i又自增,i為8

列印出來a就是7 b是7 這個時候i是為8的然後a被賦予i自減以後的副本,就是7,而i這時候為7,b又被賦予i的副本為7,然後i又自減為6。

再次列印,a為7,b為7,這時候i為6

下面根據優先順序i++先算,那麼,i++表示式的值為i的副本,那麼就是6,然後負號表示式就是-6。這個-6傳給printf,列印出-6,同時i也自減了,這個時候i為5。

再次列印,i為5。

關於c++中自增的右結合性的問題,求大神解答!!!

10樓:少年遊

因為c裡面的運算子是按照最大匹配原則來讀取的,所以讀到j後面有兩個++時就按照j++作為一個表示式來計算

11樓:匿名使用者

++是單目運算子優先順序最高,而+是雙目運算子優先順序要低些。

c++自增運算?答案以及解釋

12樓:匿名使用者

第一個是錯的k=k+i++;

可以拆解為k=k+i;

i=i+1;

i++ 和 ++i;前一個是 後自增,第二個是前自增;

第一個是i參與別的運算後再加1,後一個是自身加1後再參與運算。

C語言自增問題,c語言的自增自減問題

我已經用c實現 include int main 結果為 output 1 i 6 k 9 2 i 6 k 12 3 i 6 k 15 4 i 6 k 18 結果分析 首先看第一個 k i i i 執行過程 首先 k i i i 得到k 9然後執行 i i i 得到i 6再看第二個 k i i i ...

C語言自增自減問題,c語言的自增自減問題

i 5 應該是a 5吧?x a a a 這種問題沒有必要分析的。在不同的編譯系統下,答案不一樣,在vc 下,答案是24。很直接了當的告訴你,這個無意義的運算在不同的編譯器上可能會有兩種不同的結果.都已經告訴你了.有從左往右,也有從右往左,難道還不明白嗎?這取決於編譯器 此類問題是毫無意義的.因為 像...

c中的運算子問題

這種細節的東西.你可以自己好好研究研究.還有要告訴你,不同的編譯環境結果也不相同.這個很簡單啦 不論b 是否執行 但是我們可以知道 兩邊的運算元不為0 所以執行完 後 b a 的答案一定是1 在計算 也就是 那麼此時該式就是b b 1 什麼數和1取餘不都餘0 所以b的結果當然是0啦 下面的童鞋考慮的...