1樓:匿名使用者
結果都是6,整個表示式運算結果如下。
0.你首先要牢記,當一個變數被賦予一個新值的時候,舊值就沒有了
1.a首先被賦予5這個值。
2.++在前面是先加後算,所以a先自增為6,這時候5就已經沒有了。
3.a自增過後,b被賦予運算過後的a,也就是6了。
4.因為逗號表示式(括號中多個逗號的就是逗號表示式,一般最後計算)的值總是取括號中的最後一個,所以x取b的值,還是6。
不信可以自己寫程式試試……
擴充套件一下,考慮下面這個表示式:
int x,a,b,c;
x = (a = 5, b=a++,c=++a,456,789);
//肯定先從括號中開始算起。
//a剛開始等於5
//b=a++,++運算在後,先算後加,先把a的5給b,然後把a加1,此時b為5,a為6
//c=++a,++運算在前,先加後算,因為上一個式子a已經是6了,所以a再加1,變成7,再給c,此時a為7,c也為7。
//最後才算逗號,x肯定是取後面一個的值,也就是789。
//所以最後x=789,a=7,b=5,c=7
因為不知道你是學c,還是c++的,這兩個式子,具體程式設計輸出方法我就不寫了。
2樓:匿名使用者
我把最終的彙編**貼出來,附上翻譯,你一看便知
mov dword ptr [a],5 //把5放到變數a中
mov eax,dword ptr [a] //把a的值放到暫存器eax中
add eax,1 //eax+1
mov dword ptr [a],eax //把eax的值賦給變數a,a=6
mov ecx,dword ptr [a] //把a的值給ecx
mov dword ptr [b],ecx //把ecx的值給變數b
mov edx,dword ptr [b] //把變數b的值給edx
mov dword ptr [x],edx //把edx的值賦給x,很顯然,此刻 b=6 x= 6,1樓給出了錯誤答案
3樓:傻帽天才
a 是6 a的值 以括號表示式中 最右邊那個表示式的值 作為它最終的結果值。
以後遇到類似情況都是這個原則 括號裡邊最後邊表示式的值 為 最終的結果值 。
4樓:血天藍海
怎麼有括號...求不出來的啊...括號裡面又不是計算式...去掉括號的話...x=5 a=6 b=6
5樓:藍心西瓜
x=6;
a=6;
b=6;
6樓:匿名使用者
a不變,b為六,x為五
執行語句x=(a=4,b=a--,a++)後,xab的值依次為
7樓:
x=3 a=4 b=4
逗號運算子,x=最後一個表示式的值
a=4b=a-- ;=>b=4 a=3
a++; =>x=3 a=4
8樓:匿名使用者
執行這句時:x=4,b=47,a=4.
執行這句後:x=4,b=3,a=5
9樓:匿名使用者
b=4,x=3,a=4
在c語言中,語句x= (a=3, b=++a);執行後,x,a,b的依次為 注:需要步驟
10樓:喵不語
首先a=3.b=++a=4.逗號表示式為最右邊式子的值,所以x=4
執行語句x=(a=3,b=a––);後,x,a,b的值
11樓:金色潛鳥
回答過了。
x=(a=3,b=a--);
表示式內 a-- 是字尾減減,所以表示式內用 a 的原值,出了表示式 再自減1,所以上式分解為 2式子:
x=(a=3,b=a);
a=a-1;
第一式右邊是逗號表示式,逗號表示式的結果等於右邊最後一個表示式的值。
所以 第一式,可以分解為:a=3; b=a; x=b;
這樣,原來的計算按步是:
a=3; b=a; x=b; (得 a=3,b=3,x=3)a=a-1; (得 a=2)
執行語句x=(a=3,b=a––);後,x,a,b的值 是 3,2,3
c語言的一道題int x, a, b; 語句x=(a=1, b=2, a+3, b+4, a+b)執行後, x、a、b的值依次為 求解為什麼
12樓:匿名使用者
逗號運算子,取最後一個表示式的值進行賦值,但是要把前面每個表示式都計算一遍,所以a=1,b=2,x=3
13樓:匿名使用者
x=3,a=1,b=2
逗號運算子返回最後一個表示式(a+b)的值,a和b在被賦值1和2後,沒有改變過。
語句x=(a=3,b=++a);x等於多少,能詳細點說明執行過程麼
14樓:匿名使用者
x最後等於4。
(a=3,b=++a)整體是一個逗號表示式,逗號表示式從左往右求值,整個表示式的值為逗號後面的表示式的值,換言之,(a=3,b=++a)的值即表示式(b=++a)的值,而(b=++a)是一個賦值表示式,其值為賦值後的左運算元(此處即b)。
模擬逗號表示式的求值過程,先求值表示式(a=3),將3賦值給a;然後求值表示式(b=++a),將a遞增並將遞增後(因為是前置++,所以遞增後再賦值)的值(此處即4)賦值給b。
最後執行x=(a=3,b=++a),因為(a=3,b=++a)的值是b,此處相當於將b賦值給x。通過先前的分析知道b此時的值為4,因此x最後也等於4。
15樓:
int a=0;a=++a;
生成的位元組碼是:
0 iconst_0 -----0壓入棧頂
1 istore_1 [a] -----棧頂值(0)存入區域性變數1(a)
2 iinc 1 1 [a] -----變數1自加(++a操作,自加後變數1的值為1)
5 iload_1 [a] -----變數1的值壓入棧頂(值為1)(++a效果)
6 istore_1 [a] -----將棧頂值(1)存入變數1(=操作)
a的值依次變化為:0->1->1x為4
語句x a 3,ba x等於多少,能詳細點說明執行
x最後等於4。a 3,b a 整體是一個逗號表示式,逗號表示式從左往右求值,整個表示式的值為逗號後面的表示式的值,換言之,a 3,b a 的值即表示式 b a 的值,而 b a 是一個賦值表示式,其值為賦值後的左運算元 此處即b 模擬逗號表示式的求值過程,先求值表示式 a 3 將3賦值給a 然後求值...
設有int a 3,b,則執行語句 b! a 2 後,b
宣鈺苑卿 根據運算子優先順序 條件運算子大於 賦值運算子,所以本題實際上是b a 3?2 1 因為a 3,所以a 3判定失敗,結果為1 所以b 1 1和1對於 a b c 1 b c 2 前後接兩個表示式,一個是 a b c 1,另一個是b c 2 第一個表示式結果為c 1即2 因為 a b 非0,...
明白0xa5之類的知識的進來,轉義字元 0xa5 錯在哪裡
char ch 0xa5 0xa5 表示字元數值,對一個char大小的變數ch容納不了這麼大的數,所以只用了 5 也就是 ascii 值 53,十六進位制 35,字元5。char ch 0xa5 字串,要 ch 5 才裝得下,4個字元 0xa5 何一個結束符 0 char ch 0x35 可以,0x...