1樓:匿名使用者
a+=a++;
分解a=a+a++;
此時a為0,由於a++為先執行運算後自加,所以此時的表示式可以看成是a=0+0,
這時又涉及到運算子優先順序問題,=號為最低等級,所以先執行了a++,但是這個a++並不會影響最後的結果了,因為上面的表示式已經出來了,最終a又會被賦值成0+0的結果,所以還是0
2樓:匿名使用者
a+=a++未定義的。
就是說標準未明確規定它的結果。於是會根據不同編譯器各自有不同的結果。
你可以在用c語言在vc或者dev 下程式設計看看它的結果,沒記錯的話應該是1.
而jdk執行過程應該
a++,由於右邊的++是先執行運算後自加
所以就執行a+a(結果是0),結果為0,然後執行++(a這個時候是1),最後執行=(把前面a+a執行的結果再次賦給a,那麼a就是0),所以最後結果是0。
3樓:天涯薩迪克
主要是a+和+a有區別。
在計算時,a+先執行完運算,再把a的值加1而+a則正好相反,是先把a加1,再執行運算的題中a初始值為0
a+=a++;這個語句相當於a=a+(a++),小括號中的值為0,所以等式右邊的值0+0為0,所以輸出為0。
4樓:匿名使用者
int a=0; 定義變數並賦初值,此時變數值為初值0
a+=a++; 這是一個賦值語句:a=a+a++,等號右邊第一個a值為初值0,第二個a也為初值0,此時a 值變為2。但是賦給左邊a的值為表示式a+a++的值,因此a=0.
因此輸出結果為0
5樓:
a+=a++
就相當於a等於a加上a++
對於a++ 由於是後置++ 會先輸出原始值 再加一所以會先輸出0
結果就是 a=0+0
6樓:扌查fit人
從演算法看上去,a+=a++這一步對a的值沒有影響,a還是等於初值0.
a就只是在開始給他賦值了,後來的運算沒有給到賦值的命令
所以a還是原來的a,還是值為0
7樓:匿名使用者
a=a+(a++);
這時a=0,a++也等於0,所以a=0;
如果是a+=++a,那麼a=a+(++a);,a=0,++a=1,結果為1;
8樓:匿名使用者
真搞不懂為啥要搞這個,估計沒那個傻x寫這種**玩自己和別人吧,要是給我遇上了我就猛抽,哈哈,不過以前上學的時候老是被老師玩,不敢抽。。。
9樓:匿名使用者
a+=a++;
a = a + a++
由於a++是後++ 所以a++這個表示式的值為0,此時a的值為1,因為a=a+1,
然後a=a+a++ 就是 把1+0的值賦a結果應該是1!不知道怎麼的
10樓:
a+=a++;
分解開來就是a = a + a++
由於a++是後++ 所以a的值並沒有改變所以是a = 0 + 0 = 0
為什麼lz都把結果寫出來了還有那麼多的人說最後結果是1呢?
11樓:
a = 0;
a = a + a++
→ a = 0 + 0
結果當然是0
而如果int a = 0;
a+=++a;
的話,a = 0;
a = a + (++a)
→ a = 0 + 1
system.out.println(a);
這樣輸出結果就是1了
12樓:匿名使用者
a++ 是**執行後才變成1 所以可以理解成a+=0
這樣當然還是0
如果是a+=++a 這樣的效果完全不一樣,實質是:
a+=1
結果是1
13樓:我程式設計師
你已經定義了 變數a,而且你設定a的初始值是0.
先根據優先順序,a++的結果是0,然後a+的結果還是a,所以最後這個結果是0.不知道你懂沒有。
int a,為什麼a=a-(++a)中a的值為0?
14樓:polaris北斗
假設a=1,先計算括號內的表示式則a=2再計算a—2,此時a的值已經是2,故結果為0
int a=10;a=a++;a為什麼是10
15樓:匿名使用者
因為int型為有符號的兩個位元組,即a=10化成二進位制為0000,0000,0000,1010;再取反,即為1111,1111,1111,0101這就是b!此時將b化成10進製為-32757。但在輸出時系統自動化為-32768+32757=-11儲存
16樓:匿名使用者
誰說是10了,**結束時a已經是11了。
**相當於:
int a=10;
a=a;
a++;
此時a結果11。
17樓:
a++ 單獨使用 就是原值a
若a是int型變數,且a的初值為5,則計算a+=a-=a*a,表示式後a的值為:
18樓:匿名使用者
a=-40
因為+=和-=優先順序一樣,結合方向為右到左,所以a+=a-=a*a等價於a+=(a-=(a*a))即a=a-a*a=5-5*5=-20
a=a+a=-20-20=-40
19樓:匿名使用者
感覺是-40吧,先運算a*a=25(注意:此時a的值並未變化),第二步算a-=25,即a=a-25,a=-20,再運算a+=a(此時a=-20),所以結果是-40。
20樓:匿名使用者
-40原來字數少回答不了。。。
int a=5,b;b=(++a)+(a++),怎麼計算?
21樓:示申僉
b=(++a)+(a++);
一個++在變數前,一個是在變數後
所以相當於三句:
++a;
b=a+a;
a++;
所以最後
b=a+a==6+6==12;//因為a自增了一次後就用a的值,所以此時a的值是6
a==7;//再自增一次,就從6變成7
22樓:匿名使用者
a=5,
b=(++a)+(a++)
++a是先加後計算 a++是先計算後加
即:先算++a a=6
再算:b=a+a=12;
最後算:a++=7;
23樓:匿名使用者
a 右邊表示式56
6 6
6 12
7 12
24樓:匿名使用者
a=7,b=12,++a的結果是本來的a+1,a++的結果是a,但不管是a++還是++a,a都會+1
25樓:屈飛文邊童
a++的意思是a=a+1.
或者可以這樣理解:
inttemp;
temp
=a+1;a=
temp;
這樣能明白不?
若有定義 int a則表示式a a的值為9請高手說明下這個過程
倒黴熊 二維陣列是按行儲存的也就是如下這樣 a 0 0 a 0 1 a 0 2 a 0 3 a 1 0 a 1 1 a 1 2 a 1 3 a 2 0 a 2 1 a 2 2 a 2 3 而a表示的就是a 0 0 所在的地址。所以 a 2 1 a的值為9。 陽光上的橋 請你在草稿紙上畫一個三行 四列...
如int a 3,a a a a最後我的值為A3 B0 C9 D 12未詳細解釋
賦值運算子的優先順序低於算術運算子,結合性為從右向左。所以 a a 先計算,得到 9 然後是 a 9 此後 a的值為 6 然後是 a a 也即 a a a 6 6 12 int a 3,a a a a 這個a 3後面用逗號編譯過不去的,換成分號後,拆解後面的式子。a a a a 等效於a a a 此...
在C語言中,a為0時,表示式a 0和a 0的值為 真 嗎為什麼
a 0 是一個賦值語句 a 0是一個邏輯表示式,a為0時,說明的是後者。 一個等號和兩個等號意義不一樣的,第一個 是賦值,a的值會變,第二個 是判斷,他是邏輯運算子,意思是 如果a等於0是真的話,一般會在if等帶選擇性的語句 現。 不太明白你的問題。a 0是賦值操作 a 0是判斷 a是否等於0 的表...