1樓:莫道無情
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。
2樓:足壇風行者
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、關係 < <= > >= 從左到右
3樓:我的賬號很強大
怎麼可能等於12呢?
這種東西自己試一下就好了。
答案是肯定是10,
a*=2+3也就是a=a*(2+3)=2*5=10。
#include
int main(void)
上面的**放到vc下面 執行一下,輸出a的值看看。
4樓:匿名使用者
執行順序如下:
1、a=2 a初始化為22、2+3 得到一個臨時值53、a*=() 等價於 a=a*() , 這兒的括號裡是上面的結果5,因此a=2*5 ,最後得到10.
5樓:匿名使用者
複合賦值運算子(+=、-=、*=、/=)的優先順序低於算數運算子(+、-、*、/),所以a *= 2 + 3可寫作
a = a * (2 + 3),由此可見,2 * (2 + 3) = 10。
6樓:小佳佳
a*=2+3等價於a=a*(2+3),所以a=10
7樓:匿名使用者
2樓的兄弟,你是故意的還是?2+3是等於6嗎?這個結果等於10,除非是2*3,才等於12.
8樓:
a = a *(2+3)=2*5=10
c語言中,inta 3,b 2,c 1,為什麼賦值語句a b c 1錯誤了
賦值語句沒有錯,錯的應該是變數的說明語句 inta 3應該在變數與型別說明符間加空格以示區別 int a 3,b 2,c 1 沒有錯啊。include int main inta 3 這個連起來寫已經錯了。當然,排除你是筆誤。a b c 1,是合法的。沒有錯誤。在vs 2010中可以編譯通過。因為a...
當m為何值時,關於x的方程3xm2m23mx的解小於
3x m 2 m 2 3m x 3x m 2m 4 3m x 3x x 3m m 2m 4 2x 4m 4 x 2m 2 2m 2 5 2m 7 m 7 2 當m取何值時,關於x的方程3x m 2 m 2 3m x的解在 5和5之間 不包括 5和5 解方程3x m 2 m 2 3m x,移項,得 3...
若x2 3x 1,求x2 x4 x2 1 的值
x 3x 1 0 同除x,得 x 3 1 x 0 則 x 1 x 3 x 1 x x 1 x 2 9 所以 x 1 x 7 x x 4 x 1 分子分母同除x 得 x x 4 x 1 1 x 1 1 x 把x 1 x 7代入,得 x x 4 x 1 1 x 1 1 x 1 7 1 1 8 祝你開心!...