C語言中,m 0 Amm此時,Am

時間 2021-09-05 20:02:52

1樓:伊·梵

這個和編譯器自身處理過程有關係,不同的編譯器,結果不盡相同,不必過於糾結。

比如a = (++a) + (++a) + (++a);

有些編譯器會先計算右邊,最後賦值給a:++a;++a;++a;a=a+a+a;

有些編譯器實際的過程變成:a=++a; a=a+(++a);a=a+(++a);

有些編譯器實際的過程變成:a=(++a)+(++a); a=a+(++a);

有些編譯器實際的過程變成:a=(++a); a=a+((++a)+(++a));

2樓:

3.2 使用我的編譯器,下面的**int i=7; printf("%d\n", i++ *

i++); 返回49?不管按什麼順序計算, 難道不該列印出56嗎?

儘管字尾自加和字尾自減操作符++和--在輸出其舊值之後才會執行運算,

但這裡的「之後」常常被誤解。沒有任何保證確保自增或自減會在輸出變數原值之

後和對表示式的其它部分進行計算之前立即進行。也不能保證變數的更新會在表

達式「完成」 (按照ansi c的術語, 在下一個「序列點」之前, 參見問題3.7)之前

的某個時刻進行。本例中, 編譯器選擇使用變數的舊值相乘以後再對二者進行自

增運算。

包含多個不確定的***的**的行為總是被認為未定義。(簡單而言, 「多

個不確定***」是指在同一個表示式中使用導致同一物件修改兩次或修改以後

又被引用的自增, 自減和賦值操作符的任何組合。這是一個粗略的定義; 嚴格的定

義參見問題3.7, 「未定義」的含義參見問題11.32。) 甚至都不要試圖**這些東

西在你的編譯器中是如何實現的(這與許多c教科書上的弱智練習正好相反);正

如k&r明智地指出, 「如果你不知道它們在不同的機器上如何實現, 這樣的無知可

能恰恰會有助於保護你。」

3樓:賽車引擎

你看啊,m在執行這句**之前為0,前置++是在執行之間完成的,所以共執行兩次++運算,0自加兩次變成了2,所以這句**實際上執行的是a=2+2

c語言裡邊m++與++ m區別是啥,求形象解答,謝謝!

4樓:匿名使用者

若m=6;

a=m++;

則執行完該語句後a=6,m=7.(賦值運算取自加之前的值)若m=6;

a=++m;

則執行完該語句後a=7,m=7.(賦值運算取自加之後的值)如果單純有一行是

m++或者++m,沒有賦值或取值,那麼這兩句實際結果是一樣的,都是m的值增加了1

5樓:12我的

m++是先讓m進行加一操作,在使用m的值,例如m=5,a=m++,a就=6

6樓:

m++=m+1;++m=1+m

7樓:酆蓉魯雲淡

我說下吧:

比如:如果m=9的話.那麼:

n=m++

的結果就是:n=9

m=10

n=++m

的結果就是:n=10

m=10了

再看下助理的,就是這意思了

c語言中表示式a*=m--是什麼意思

8樓:匿名使用者

把a*m的結果給a,然後m自減1

比如a =2, m=3

計算完之後,a就是6(2*3),m是2,計算完自減了1

9樓:匿名使用者

a*=m--;

a = a * (m--);

如果 a = 5, m = 6 那麼

a*=m--; ---> a = a*(m--) --->a = 5*6 ----> a = 30 and m = 5

c語言中m+=i++表示什麼意思

10樓:天雲一號

m+=i++ 這是賦值運算子與自增運算子的綜合使用,該表示式等價於如下2條表示式:

m = m + i;

i++;

如果表示式換成m+=++i,則改表示式等價於:

i++;

m = m + i;

// 因為是++i,所以i的值需要先進行加1,之後再參與表示式的運算;而i++是先將i的值代入表示式計算,表示式計算完後,i的值再加1

11樓:吳少春

表示 m=m+(i++),注意的是,假如m的初始化為2,i的初始化為3,則m+=i++之後,m=5,i=4。

12樓:匿名使用者

a+=b 表示 a=a+b;而這裡面b是i++,這就看著貌似有點麻煩,其實很簡單

首先++表示自增 即i++等價於i=i+1;

但是有順序的,即 i++是先用i,然後再++;++i是先++在用i;

比如你這個例子:m+=i++; 就是先用i,然後在i++這樣一來,就相當於兩個語句: m+=i;(或者寫成m=m+i)i++;(或者寫成i=i+1,這裡只有一個i++,就無所謂++在前或是在後了)

13樓:匿名使用者

i++表示i自增,即i=i+1;

j++=2 有兩個運算子++ 和= 這兩個運算子都是右結合的,所以先賦值j=2 然後j++ j的值變為3

14樓:

i++表示先引用i的值,再使i的值加1,i++當成右值看待(i++=3,這個錯誤)。j++同理

++表示先使i的值加,再引用i的值,++i當成左值看待(++i=3,這個正確)。++j同理

15樓:匿名使用者

抱歉,三樓的不對,四樓的同意錯了!

確實是m=m+i,i=i+1

請注意i++是i先參加運算,然後才加1,這是關係一定要搞清楚!

16樓:智遴

舉個例子吧,假設i=2,m=3,則m+=i++是先進行i++,再進行m=m+(i++),此時i=3,m=5.

17樓:匿名使用者

m=m+i;

i=i+1;

謝謝採納

18樓:

m=m+i;

i=i+1;

19樓:匿名使用者

注意順序

i=i+1;

m=m+i;

20樓:匿名使用者

i=i+1;

m=m+i;

同意三樓的

c語言中!10的值為0,為什麼,c語言中a 1 0 的值是什麼

ch陳先生 計算機記憶體儲存的時候認為規定了,只有0,沒有 0。c語言是一門程序導向的 抽象化的通用程式設計語言,廣泛應用於底層開發。c語言之所以命名為c,是因為c語言源自kenthompson發明的b語言,而b語言則源自bcpl語言。1967年,劍橋大學的martinrichards對cpl語言進...

c語言中 e什麼意思,c語言中,E! 0和!E 0各是什麼意思

宦泰然公靖 c語言 e的意思是 以指數形式輸出實數。指標的值是語言實現 編譯程式 相關的,但幾乎所有實現中,指標的值都是一個表示地址空間中某個儲存器單元的整數。printf函式族中對於 p一般以十六進位制整數方式輸出指標的值,附加字首0x。示例 inti 1 printf p i 相當於inti 1...

c語言中如何生成0到1的隨機數,c語言中如何生成1個0到1的隨機數

八哥說科技 c語言中生成1個0到1的隨機數可以執行語句 float b rand rand max 1.0 解析 標準c庫中函式rand 可以生成0 rand max之間的一個隨機數,其中rand max 是stdlib.h 中定義的一個整數,它與系統有關。rand 函式沒有輸入引數,直接通過表示式...