已知定義int a 2,則表示式a a a a a的值是

時間 2021-08-30 10:54:02

1樓:匿名使用者

這個表示式無意義,編譯器會給出警告資訊。該表示式的值與編譯器相關

非要執行,看一下這句在gcc給出的反彙編

0x401476 mov    eax,0x1

0x40147b sub    eax,dword ptr [esp+0xc]

0x40147f mov    edx,dword ptr [esp+0xc]

0x401483 imul   eax,edx

0x401486 mov    dword ptr [esp+0xc],eax

0x40148a mov    eax,dword ptr [esp+0xc]

0x40148e mov    edx,dword ptr [esp+0xc]

0x401492 imul   eax,edx

0x401495 mov    dword ptr [esp+0xc],eax

0x401499 mov    eax,dword ptr [esp+0xc]

0x40149d add    dword ptr [esp+0xc],eax

0x4014a1 mov    eax,0x0

2樓:匿名使用者

整個表示式,從右往左看,2+(2*(2-(2*2)))=-2

設int a=12;表示式a+=a-=a*=a 的值是

3樓:四舍**入

計算出來的值為:-120

具體計算步驟如下

1、a*=a  為144

2、a-=(a*=a)  等價於

a-=144 即 a= a - 144 為-1323、a+=(a-=(a*=a))等價於a +=-132 即 a= a +(-132) 為 -120

4樓:匿名使用者

+=、-=、*=這三個運算子執行順序都是從右往左第一步 執行a=a*a  a=144;

第二步 執行a=a-a  a=144-144=0;

第三步 執行a=a+a  a=0+0=0;

5樓:匿名使用者

結果為零。

a+=a-=a*=a 從右向左算;

a*=a a=a*a=12*12=144a-=a*=a a=a-a=144-144= 0a+=a-=a*=a=0+0=0

6樓:蘭色心事

明明是-264,算錯了答案別人看到會當真,一步步來 先算乘法再算減法得到的值代入最後算加法 結果-264

7樓:王子不騎馬的啦

計算出來的值為:-120

具體計算步驟從後往前看

a*=a  為144

a-=(a*=a)  等價於 a-=144 即 a= a - 144 為-132

a+=(a-=(a*=a))等價於a +=-132 即 a= a +(-132) 為 -120

8樓:艾默得

表示式可以寫成a=a+(a-(a*a));a*a=144;a-a=144-144=0;a+a=0+0=0;所以最終結果為0。

9樓:匿名使用者

補充一個點,複合賦值運算子是右結合運算,所以依次從右往左結合。如其他答主所示。

10樓:手機使用者

王子不騎馬是對的,王

子不騎馬是對的,王子不騎馬是對的,王子不騎馬是對的,王子不騎馬是對的,王子不騎馬是對的,王子不騎馬是對的,王子不騎馬是對的,王子不騎馬是對的。

說這麼多還不如執行一下,真實的結果總是好多差評,本來都不準備說了,看到他差評那麼多還是說一下吧

11樓:酆司越成

c不過糾正上面老兄的一個小錯誤。。賦值運算子都是從右到左的!。。

12樓:竹華勤若雁

cddc

我來解釋吧

1,a=a+(a=a-(a=a*a)),=是從左向右執行的,於是在執行a=a-a時,a=0了,然後就一直是0了

2,巨集定義,d=(a+b)+(a+b)*c,所以803,ab是明顯錯誤,字串是指標常量,不能這樣賦值,仔細分析,p和a是一樣的資料型別,都是字元指標,但p沒初始化!所以是d

4,很明顯k不是0,不執行迴圈

以上各題我都編譯實驗過,保證正確

13樓:愛笑的

先a*a為144,然後a=a-a*a=-132,現在a的值已被賦值為-132,然後a=a+a即-132+(-132)=-264

若有定義int a =10,則表示式a+=a-=a*=a的值是多少啊

14樓:

a+=a-=a*=a的值為0

解析:左結合:先做a*=a, 因為a=10,a*=可寫為a=a*a=100 此時a的值為100

a-=a 可寫為a=a-a=0,此時a 的值為0a+=a可寫為a=a+a=0

綜上:a+=a-=a*=a的值為0

15樓:

#include

int main()

顯示的答案是 0; 連續賦值 的規則 是從右到左~我們分細點

1: a+=a-=a*=10

2: a+=a-=100

3: a+=0

4: a=0

所以答案是 0

lz 明白了嗎~~

16樓:1我不是吃貨

-80。

我想的是,從左往右算,那麼左邊的a的值是10不會變的。所以就變成了10+=10-=10*=10

10+=10-=100

10+=-90

-80嗯嗯,應該沒錯。

17樓:聽不清啊

表示式a+=a-=a*=a的值=0

18樓:好時光悄悄溜走

0是這樣執行的:

a=a*a;a=100

a=a-a;a=0

a=a+a;a=0

身為一個優秀的程式設計師

建議不要用可讀性如此低的程式

19樓:丨嗚呼哀哉

= += -= *= /= %= &= ^= |= <<= >>= 是右結合性的;

然後光看本題,題目中出現了“-=”,也就是會遇到自己減自己,結果肯定是0,後面操作也是自己跟自己操作,無論如何結果都是0;

以後看到這樣的表示式,如果出現“-=”,結果差不多都是0;

若int a=2,則執行完表示式a–=a+=a*a後,a的值是幾

20樓:匿名使用者

2*2=4,a+= 4 => a為6,表示式也為6

a-=6,因此a為0

21樓:go學龍

a的值為0

a += a*a 》a = a+a*a=6

a -= a += a*a ?>> a = a - (a += a*a) = 0

設int a=12,則執行完語句a+=a-=a*a後,a的值是_____(

22樓:匿名使用者

-264。

1、先計算a-=a*a,得到a=12-12*12=-132;

2、a+=-132,得到a=-132-132=-264。

+= 加後賦值,變數+=表示式 如:a+=3;即a=a+3;-= 減後賦值,變數-=表示式 如:a-=3;即a=a-3。

賦值運算子的計算順序是從右到左,大多數運算子結合性是從左到右,只有三個優先順序是從右至左結合的,它們是單目運算子、條件運算子、賦值運算子。而且它的優先順序別低於其他的運算子,所以對該運算子往往最後讀取。

23樓:匿名使用者

結果為:-120

把以下**儲存為html檔案,雙擊執行即可知道!

24樓:旅林

int a=12

故a-=144,得a=0

a+=0a=0

若有定義 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 10,則表示式a a a a的值是多少啊

a a a a的值為0 解析 左結合 先做a a,因為a 10,a 可寫為a a a 100 此時a的值為100 a a 可寫為a a a 0,此時a 的值為0a a可寫為a a a 0 綜上 a a a a的值為0 include int main 顯示的答案是 0 連續賦值 的規則 是從右到左 ...

C語言題求問已知int a 23,2,1則表示式“a”的值是 B

首先a 0 0 3 a 0 1 2 a 0 2 1 而且都是int整型,所以結果也是整型3 2 1 1 請叫我路人已 3 2排放是 a 0 0 a 0 1 a 1 0 a 1 1 a 2 0 a 2 1 首先 a 0 0 3 a 0 1 2 a 0 2 1 因此 3 2 1 1 1 1 a 0 0 ...