1樓:匿名使用者
這是一個複合的結構 =是一個賦值運算子 具有自右向左性 所以應該從右往左看 先舉個例 a+=1的意思是 a=a+1;所以a-=a+4就是a=a-(a+4),這個運算完之後a=-4;然後a+=a就是a=a+a,就是a=-4+(-4)=8;希望能幫到你啊
2樓:鄭慶佳
這是關於運算子優先的,『+=』和『-=』比『+』(加)低階,『+=』和『-=』同級,運算順序為從左到右。因此a+=a- =a+4先做a+4,再做a-=a+4即a-=4+4,a=a-8;a就為-4了,再做a+=-4;a就為-8了。至於那個a+4和a-我實在不知道是什麼,c++裡面好像沒有這樣子的
3樓:魂魔尊
+=和-=是連起來的完整符號
a+=b 就表示a=a+b,a-=b 就表示a=a-b因此a+=a-=a+4,根據按右向左的運算順序,可以先算出a-=a+4,即a=a-(a+4)=-4,
再算a+=(a-=a+4),即a+=-4,即a=a+(-4)=-4-4=-8
4樓:吻使
a-=a+4 , 其實就是a=a-(a+4), 所以執行完這個語句後a=-4。然後執行a+=-4 , 其實就是a=a+(-4)。所以a=-4-4=-8。
a+=b相當於a=a+b。
5樓:千里之外
對於賦值運算,先是計算「=」號右邊的,a+4,計算出的結果為8,在計算a-=8,相當於a=a-8,計算的結果為a=-4,最後計算a+=-4,相當於a=a-4,結果為-8.
c語言 設有語句int a=4;則執行了語句a+=a-=a*a後,變數a的值是多少?
6樓:文化廚子
答案:抄-24
1、a = 4,先算a * a,表示式的值為襲16。
2、+和-同一優先順序,因為是複合賦值運算結合性從右向左進行,所以此時算
a -= 16 (a *a 表示式的值是16)相當於a = a - 16;
此時a=-12
3、最後算:
a+ = -12(a-=a*a表示式的值是-12)。
相當於a = a + (-12);
因為a = -12,所以最後的值是-24。
7樓:匿名使用者
又來討論這類沒有意義的語句.告訴你,這樣地寫語句在標準c中是沒有定義的.
雖然在版編譯器能得出結果,但是由權於標準c沒有明確定義,那麼編譯器可根據自己來作出一個規則.所以不同編譯器會得出不同的結果.
請你看我回答別人的一個問題就知道了.
8樓:
等於號是從右向左計算的……
不過,誰這麼蛋疼,用這種表示式?
若有定義:int a; 執行賦值語句a+=a*=a%=a-=4;後,變數a的值是
9樓:匿名使用者
第一步:執行a-=4(a不能為4,不然a的值會變為0,a%a會程式錯誤);
第二步:執行a%=a(此時a的值為上個a-4的差,不過不影響),餘數為0,並把0賦給a,a的
值為0;
第三步:a*=a,a的值還是0;
第四步:a+=a,a的值依舊為0。
只要a的初值不為4,結果就是0。.
10樓:陳宗權
從右向左計算。
a-=4 ==> a=?(是幾無所謂,只要不是0),運算結果是a,用它繼續
a%=a ==> a=0(如果上一步a已經為0這一步會導致異常),運算結果是a,用它繼續
a*=a
a+=a
後兩個運算之後a依然是0.
我估計你把題目寫錯了,「%」是否應該是「/」啊?如果是這樣,第二步之後a就是1,最後a是2.
11樓:匿名使用者
不用算了,肯定是0;
a+=a*=a%=a-=4;的等效語句為
a-=4;
a%=a;//這一步就決定了必然是0,不管a是多少,自己取模,肯定為0;
a*=a;
a+=a;
c語言中設int a=4,則執行完語句a+=a-=2後的值是?
12樓:娜_些
1全部4根據運算子優先順序及賦值語句的順序先執行 a-=2 即a=2, 再執行a+=2
結果 為4
如果int i,a;執行語句i=(a=2*4,a*5),a+6;後,變數的值是?怎麼理解的?
13樓:匿名使用者
i=(a=2*4,a*5),a+6;
先執行2*4=8
然後a=8
之後a*5=40
接著i=40
最後a+6=14 沒用
結果:i=40,a=8
這個查一下運算子優先順序就可以了。 一般情況,寫程式不會這樣寫的
14樓:氣宇軒昂的牛牛
呵呵,這個問題純屬考c語言的語法規則的,一般人不會這樣用的.
其實這個是c的逗號表示式的值的問題,c中一個逗號表示式的值為最右邊的值
如int a;
a=(4,2,4,1,5,7,9,0);
則a為0
至於i=(a=2*4,a*5),a+6;
i的值為括號裡面逗號表示式的值,a=2*4,則a為8,,a*5則這個括號逗號表示式的值為40,即i=40,後面a+6跟i沒關係,是整個逗號表示式的值.
15樓:
記住一點:當a = (b, c); 此時a = c (括號的級別比等號高,也是最高的一個)
當a = b, c;此時a = b(因為等號的級別比逗號高)然後你再看你的程式。
#include
int main()
a = 2 * 4, a * 5 ----- 說明a = 2 * 4,所以a = 8.
i = (a = 2 * 4, a * 5), a + 6; ------說明i = (a = 2 * 4, a * 5),進一步說明i = a * 5。之前我們知道a = 8,所以帶入後,i = 40.
我用visual驗證過,i最後的確為40, a最後為8
16樓:匿名使用者
等號的級別高於逗號!
所以 a等於8,i等於40。
已知int a=5;執行語句a=3*5,a*4,a+5;後變數a的值是多少?
17樓:荀弘壯慶驕
因為逗號運算子的優先順序最低,所以a=15,後面的a*4,a+5不改變任何變數的值
a=(3*5,
a*4,
a+5)這樣的式子就會等價於a=a+5=10,逗號運算子的規則就是從左往右依次執行,並返回最後一個表示式的值
18樓:檀偉彥祿晏
逗號運算子連線的多個表示式都會得到執行,但最終取最後一個表示式的值作為整個逗號表示式的值。
a=3*5,
a*4,
a+5;
由於=的優先順序比逗號高,所以這句話其實和下面這句話不是一回事:
a=(3*5,
a*4,
a+5);
你題目那句話,實際只有第一個a=3*5改變了a的值,後面兩個都沒有改變a的值,所以最終a的值是15。
已知int a,b;執行語句a=(b=3*2,b*4),a+6;後變數a的值為?
19樓:範幼菱但勝
根據運算子優先順序:?:條件運算子大於=賦值運算子,所以本題實際上是b=(a>3?2:1);
因為a=3,所以a>3判定失敗,結果為1
所以b=1
20樓:匿名使用者
按照優先bai級順序
1,先執行括號du
內的運算,且是從zhi左到右進dao行計算,所以括號結束後有回b=24,
2,將b的值答賦給a
3,然後執行a+6,這裡僅是進行一次加法運算,並沒有對a再次賦值,所以a的值是沒有改變的
故最後a=24
21樓:匿名使用者
先執行小括號裡的逗號表示式,得到b等於6,a=24,再執行a+6,得到整個表示式值為30.主要是考慮其逗號表示式與賦值的優先順序。
22樓:求知者不老
#include "stdio.h"
main()
運算出來是 24
已知int,a;執行語句i=(a=3,a++,--a,a+4,a+5,++a);後,變數i的值怎麼算
23樓:
確實i的值為4.
這道題要弄明白,首先要知道(a = 3, a ++, -- a, a + 4, a + 5, ++a)括號內是逗號表示式,該表示式的值是最後一項的值,也就是++a的值,而且逗號表示式的運算順序是從左到右。
這裡我們來算一下:首先a = 3,即為a初始化,值為3;接下來a ++,a自加,則a由3變成4,遇到-- a,a自減,則a由4變成3,然後a+4=7,a+5=8,記住此時a的值不變,都是3,最後遇到++a,a進行自加,就由3變成4。這是a最後的值,也是該逗號表示式的值。
所以i的值就為4。希望我說的你能明白。這種型別的題,要耐著性子,跟著題目慢慢算。
24樓:叢培勝示卯
恩從左到右依次計算
a=3a++完成後a=4,--a後a=3,a+4與a+5是迷惑人的,他們吧是給a賦值的,到最後執行++a,a=4這樣就完成了!
25樓:淦仁蔣嬋
a+4,
a+5只是計算這兩個的值,並不改變a的值,最終i還是等於++a的值。
如果是a+=4,
a+=5,那麼值就有變化了。
26樓:樸丹樊鳥
逗號表示式,其值為最後一表示式的值,也就是++a值,即i=++a;
若有定義語句int a 12,則執行表示式a a a a
a a a a,運算子和結合性,bai由運算子優 先級,du 優先順序為zhi4,和 優先順序為14,結合方向從dao左至回右,和 從右至左,所以 先計答算 a a a 12,a a 12 12 24再計算 a a a 即a a a a 12 24 12,最後計算 a a,即a a a 12 12 ...
若有定義語句int a 12,則執行表示式a a a a後a的值為
a a a a,運算子和結合性,由運算子優先順序,優先順序為4,和 優先順序為14,結合內方向從左至右,和 從右至左容,所以 先計算 a a a 12,a a 12 12 24再計算 a a a 即a a a a 12 24 12,最後計算 a a,即a a a 12 12 24 若有定義語複句in...
若a12則執行語句aaa後a值是0執行a
這是兩個空嗎?若a 12則執行語句a a a後a值是2,執行a 2 3後a的值是27.此解答僅供參考。應該是60,因為根據賦值運算子的右結合性,原式 a 2 3 60 若有定義語句int a 12,則執行表示式a a a a後a的值為多少?a a a a,運算子和結合性,bai由運算子優 先級,du...