1樓:星天閣主
結果是0,應該是這樣的,從右往左依次計算,先是這個,a*=a 2;相當於a=a*(a 2);結果是,a=8;然後再計算a-=(a*=a 2)後面括號裡返回值為8,所以就是:a=a-a=0;其實就是什麼都沒算!
2樓:永鴻才
a=2,則a+2=2+2=4 那麼a*=4,則a=a*4=2*4=8 那麼a-=8,則a=8-8=0
結果我已經試驗過了,絕對正確,**如下:
#include
using std::cout;using std::endl;
int main()
3樓:匿名使用者
根據運算子優先順序,
-=,*=都是從右往左計算,所有先算a+2,然後再從右往左計算。
最好別寫這種**,不同編譯器出來的結果是不一樣的,而且不同語言環境,出來的也有可能不一樣。
4樓:it日常總結
=為右結合,從右到左算,等效於:
a*=a+2;整個表示式的結果為a(8),所以下一步為
a-=a; 不論a為何值,最終a=0
5樓:良可
a*=a+2 => a=a*(a+2) => a=8
a-=a => a=a-a=0
所以等於0
int a=2;a+=a-=-a*a++; a為多少?謝謝
6樓:
int a=2;
a+=a-=-a*a++;
相當於int a=2;
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,運算完之後 a=2-(-2*2)=6
a=a+a;//a的值已經變成6,運算完之後 a=6+6=12;
a++;//a變成12,再自增1,所以運算完之後 a=13所以最後a的值是13
7樓:匿名使用者
見誰這麼寫**你就拿大嘴巴使勁抽他,抽到他知道拆語句和加括號為止。
8樓:
先拆開表示式為 a = a+(a=(a-(-(a*a)++))=a+(a=7)=7+7=14
1、a=(a-(-(a*a)++))=(2-(-4++))=2-(-5)=7
2、a=a+a=7+7=14;
int a=2;a+=a*=a-=a*=3;a=?
9樓:gta小雞
a+=a*=a-=a*=3 是未定義行為。**的後果是不確定的。
10樓:匿名使用者
因為a-=a*=3算出的a已經等於0了,所以最後a肯定等於0。
設有變數定義int a=2;計算表示式a+=a/=a-=a*a,變數a的值是
11樓:風若遠去何人留
從右向左計算
a-=a*a >>> a=2-2*2=-2a/=a >>> a=-2/-2=1
a+=a >>> a=1+1=2
於是 最終a的值是2
12樓:匿名使用者
a*a = 4
a-=4 ===> a = -2
a/= (-2) ===> a = 1a += 1 ===> a = 2
結果a= 2;
int a=2; a*=2+3;a的值為什麼等於12?
13樓:莫道無情
a的值是10 ,不是12。
int a=2; a*=2+3;語句執行過程:
int a=2;//將2賦值給a
a*=2+3;//要考慮運算子的優先順序
,運算子+的優先順序大於*=,故a*=5,即a=a*5。a被賦值為2,所以a=2*5=10。
14樓:足壇風行者
int a=2; a*=2+3;a的值不等於12,而是10。
a*=2+3;這個程式算式中是優先算2+3的,因為+的優先順序比*=高。
也就是a*=5;
a*=5相當於a=a*5,又因為已經定義了a=2,所以a*5=2*5=10。
printf(a)時執行程式後得出結果也是10。
擴充套件資料
c語言中的運算子優先順序介紹:
運算子的優先順序確定表示式中項的組合。這會影響到一個表示式如何計算。某些運算子比其他運算子有更高的優先順序,例如,乘除運算子具有比加減運算子更高的優先順序。
例如 x = 7 + 3 * 2,在這裡,x 被賦值為 13,而不是 20,因為運算子 * 具有比 + 更高的優先順序,所以首先計算乘法 3*2,然後再加上 7。常見的運算優先順序如下:
1、字尾 () -> . ++ - - 從左到右
2、一元 + - ! ~ ++ - - (type)* & sizeof 從右到左
3、乘除 * / % 從左到右
4、加減 + - 從左到右
5、移位 << >> 從左到右
6、關係 < <= > >= 從左到右
15樓:我的賬號很強大
怎麼可能等於12呢?
這種東西自己試一下就好了。
答案是肯定是10,
a*=2+3也就是a=a*(2+3)=2*5=10。
#include
int main(void)
上面的**放到vc下面 執行一下,輸出a的值看看。
16樓:匿名使用者
執行順序如下:
1、a=2 a初始化為22、2+3 得到一個臨時值53、a*=() 等價於 a=a*() , 這兒的括號裡是上面的結果5,因此a=2*5 ,最後得到10.
17樓:匿名使用者
複合賦值運算子(+=、-=、*=、/=)的優先順序低於算數運算子(+、-、*、/),所以a *= 2 + 3可寫作
a = a * (2 + 3),由此可見,2 * (2 + 3) = 10。
18樓:小佳佳
a*=2+3等價於a=a*(2+3),所以a=10
19樓:匿名使用者
2樓的兄弟,你是故意的還是?2+3是等於6嗎?這個結果等於10,除非是2*3,才等於12.
20樓:
a = a *(2+3)=2*5=10
2 若有以下說明 int a 121,2,3,4,5,6,7,8 char c a,d,g則數值為4的表示式是 DA a
a.a g c 因為g沒有值,所以計算的時候會按地址的值來計算。錯 b.a 4 表示的是第5個數。為5c.a d c 使用ascii計算 d c 1,即a 1 2 d.a d c 注意c沒有單引號,故a d c a d a 使用ascii計算 d a 3,即a 3 4 故選擇d 希望能幫助你! 變數...
spss如何計算2和p值,spss如何計算x2和p值
紫煌唯 健康教育知曉率前後對照如何計算 x2 p 瞭解 不瞭解 瞭解 不瞭解 x2 p 42 64.62 23 35.38 53 81.54 12 18.46 怎麼用spss算這個表的x2和p值 10 分3列錄入資料,行 列和發病數 怎樣用spss計算p值? 第溪齊白楓 先把資料按照格式錄入到sps...
int a 3,b 2,c 1 c 5 abprintfd n ,c 輸出為什麼是3啊?求大神指點
因為c 5永遠是 真 所以執行?後的a 而a 是後 要把a的值3賦給c後a才變為4。 單屏安 c 5這個條件為假,應該執行b 得b 1,但是最後輸出為c,c不變,應該是c 1 飛向夢想飛向未來 c語言提供一種特殊的運算子 逗號運算子。用它將兩個表示式連線起來。如 3 5,6 8 稱為逗號表示式,又稱...