以下c語言程式,按照逗號運算子的演算法,最後程式執行時卻輸出x,y都為6,新人求教

2021-08-13 22:27:31 字數 1086 閱讀 3706

1樓:匿名使用者

y=((x=a+b,(b+c));可以寫成x=a+b; y=b+c;這樣你自己就會算了。逗號表示式是一種將多個語句變成一條語句的方法,只要把它還原回去就可以理解了,比如:

for ( i=0,n=0;i<5;i++ )就可以還原成:n=0; for ( i=0;i<5;i++ )這並不複雜。

還原的方法就是,每個逗號前面的東西如果是一條語句就寫成語句,用最後乙個式子賦值。

如:y=(x++,x+y,x=a+b,b--,b+c);順序寫:x++; x=a+b; b--; y=b+c;//由於x+y計算後沒有儲存結果,可以省略不寫了。

但如果是x+=y結果儲存到x就要寫。

2樓:匿名使用者

程式裡面 b+c沒有賦值,沒啥實際意義

就是 y = (x=a+b)

就這一步有意義

3樓:匿名使用者

逗號運算子是所有運算子中優先順序最低的,y=(x=a+b),(b+c);等價於(y=(x=a+b)),(b+c);

所以算出來y是等於x的,都等於a+b=6;

4樓:我是藍色阿

正確寫法

#include

void main()

你將(x=a+b)和(b+c)括起來沒用的,(x=a+b),(b+c)等價於x=a+b,b+c

你的目的是想將x=a+b,b+c這個逗號表示式的值賦給y,那就必須這樣寫y=(x=a+b,b+c);

你這樣寫y=(x=a+b),(b+c);意思就不一樣了,計算機就將y=(x=a+b)當成表示式1,(b+c)當成表示式2

這樣的話,按優先順序計算機就會先算x=a+b,這時候x變數下儲存的值就是6,然後計算y=x,此時y變數下儲存的值就是6,最後計算b+c得10,也就是整個逗號表示式的值是10

因此你那個程式輸出結果都是6

希望能幫到你

5樓:匿名使用者

你也許應該這樣寫: y = ( (x = a + b), (b + c) );

6樓:匿名使用者

逗號運算子的優先順序要低於賦值運算子

C語言運算子C語言運算子是怎麼運算的

內容來自使用者 wjian178 e68a84e8a2ad62616964757a686964616f31333433646432 1級優先順序 左結合 圓括號 下標運算子 指向結構體成員運算子 結構體成員運算子。2級優先順序 右結合 邏輯非運算子 按位取反運算子 字首增量運算子 字首減量運算子 正...

c語言(冪)運算子,C語言 (冪)運算子

運算子是 按位異或 1 異或是乙個數 算符。他應用於邏輯運算。2 例如 真異或假的結果是真,假異或真的結果也是真,真異或真的結果是假,假異或假的結果是假。就是說兩個值不相同,則異或結果為真。反之,為假。3 在計算機應用中,普遍運用,異或的邏輯符號 shift 6 形象表示為 真 假 真 假 真 真 ...

c語言運算子中問號是什麼意思C語言運算子中問號是什麼意思

問號是條件運算子的意思,跟冒號組合使用。條件運算子優先順序高於賦值 逗號運算子,低於其他運算子。表示式為 表示式1?表示式2 表示式3。先求解表示式1,若其值為真 非0 則將表示式2的值作為整個表示式的取值,否則 表示式1的值為0 將表示式3的值作為整個表示式的取值。擴充套件資料條件運算子具有右結合...