1樓:廈門欣中特科技
逗號運算子是從左往右算的
2樓:庚琰
不太清楚您的意思
(a-b,b+4,a-=b+4),整體從左往右。每乙個分式從右往左賦值。
如果a=2,b=1則:
整體為(2-1,1+4,a-=(5))=》((2-1,1+4,a=a-5)=》(2-1,1+4,a=-4)
這樣吧。
求c語言大神給我講解下下圖中的c=(a-=a-5),(a=b,b+3); 的運算過程以及中間逗號的意思
3樓:匿名使用者
首先,請搞明白一種表示式叫逗號表示式,就是將一組語句連著寫出來,中間用逗號分隔;表示式的取值是最後乙個語句的取值。
c=(a-=a-5),(a=b,b+3); 這個語句是乙個逗號表示式,前面的語句是c=(a-=a-5);後面的語句是(a=b,b+3);後面的語句也是個逗號表示式,整個表示式的值沒有處理,所以不關心。
計算:a-=a-5;即a-=-5;即a+=5;結果a=5c=(a-=a-5)結果c=5,a=5
a=b結果a=0
b+3運算了等於3但沒有儲存結果,對a,b,c的值不產生影響(a=b,b+3)的值是3,即b+3的結果,但這個結果也沒有儲存,對a,b,c的值不產生影響
最終:a=0,b=0,c=5
4樓:黑丶雨
逗號運算子:
在c語言中,多個表示式可以用逗號分開,其中用逗號分開的表示式的值分別結算,但整個表示式的值是最後乙個表示式的值。
逗號運算:
在c語言中,多個表示式可以用逗號分開,其中用逗號分開的表示式的值分別結算,但整個表示式的值是最後乙個表示式的值。
例如:int a1,a2,b=2,c=7,d=5;
a1=(++b,c--,d+3);
a2=++b,c--,d+3;
對於給a1賦值的**,有三個表示式,用逗號分開,所以最終的值應該是最後乙個表示式的值,也就是(d+3)的值,為8,所以a1的值為8。
對於給a2賦值的**,也是有三個表示式,這時的三個表示式為a2=++b、c--、d+3,(這是因為賦值運算子比逗號運算子優先順序高)所以最終表示式的值雖然也為8,但a2=4(第2行**運算完時,b=3,即第3行**執行時,b的值為4)。
注意事項:
逗號運算的結合性是從左至右,完畢之後整個表示式的值是最後乙個表示式的值。
例子:int a[2],x=2,y=5;
a[0]=(x+3,y++,x++);那麼最終結果是:a[0]=2 x=3 y=6;
為何a[0]=2:因為(x++)是運算之後再自加
a[1]=(x++,x+3,x+7);那麼最終結果是:a[1]=11 ,x=4
第一反應,我以為a[1]=10,就是3+7;其實是錯的。
計算a[0]的時候,x++了一次,此時x=3;計算a[1]的時候,又x++一次,此時x=4,因此a[1]=4+7=11
不信你改成a[1]=(x++,x+7,x+3);除錯一下,逗號表達試結果是7,就是4+3,說明經過乙個逗號,x已經自加變成4了。[1]
再來乙個關於結合性的例子:
int i=24;
i=(i++,i++,i++,i++);//i=27
因為逗號運算子的結合性是自左向右,所以四個i++會依次執行,但是最後乙個i++在賦值之後才進行運算,所以最終返回27
5樓:匿名使用者
中間的逗號起到分隔作用,逗號是乙個雙目運算子(a,b)返回的是b的值,同
時逗號是從左往右算,所以先算a
(a-=a-5) 中,先算a-5還是 -= ?要看運算子優先順序,-比-=高,所以先算a-5 =-5
然後a-=-5,此時a仍未0,所以該表示式為5第二個同理
(a=b,b+3)返回的是b+3
值得一提的是,由於逗號比賦值優先順序低,所以c=(a,b),(c,d)實際上是
c=(a,b),返回的是b
6樓:無敵玉琴
a=0;b=0;c=5
c語言上的問題 !(a+b)+c-1&&b+c/2的值 a=3,b=4,c=5
7樓:聽不清啊
整個表示式的值為真(即 1)
!(a+b)=!7=0
!(a+b)+c-1=0+5-1=4
b+c/2=4+2=6
原式=4&&6=1 //兩個非0的值,即兩個true,相與的值,仍為true,即1
8樓:匿名使用者
根據從左到右計算順序,結合運算子優先順序,根據定義
a = 3, b = 4, c = 5,假定 a,b,c 為 int。真值為1,假值為0。
計算步驟如下:
1、計算 a + b,結果為 a + b = 7
2、計算 !( a + b) 結果為 0,也可以認為是false(假)。
3、計算 c/2,假定c為int時,結果為 2(取整),為float或者double時為2.5,但不影響最終結果,因為都是真值(非零值)。
4、計算 0 + c,結果為 5
5、計算 5 -1,結果為 4。
6、計算 b + 2 或者 b + 2.5,結果為 6 或者 6.5。
7、計算 4 && 6 後者 4 && 6.5,因為兩邊都為非零值,所以結果為 1,或者true。
這裡主要是乙個運算子優先順序的問題,在本表達多中。
小括號的優先順序最高,所以最先計算括號內的值。
其次是邏輯非,然後是除法,然後是 加減法,最終是 邏輯與。
9樓:匿名使用者
這個是邏輯運算只討論真假,與數值沒有多大關係只要弄懂運算級別高低就可以最後結果為一,不懂可以mm我
10樓:匿名使用者
()優先順序最高先算 !(a+b) =!7=0算術運算子大於&& 所以先算c-1=4
* /大於加減先算c/2=2然後加b等於6最後相與 4&&6 真與真還是真 最後等於1
11樓:麒麟也涅槃
a=3,b=4,c=5
a+b=7
!7=0
c-1=4 為真
b+c/2 不為0 所以也是真
真&&真 值為真 即=1
12樓:k寂寞的小炮
結果等於1
!(a+b) = 0;
0+c-1 = 4;
b+c/2 = 6;
6&&4 = 1;
13樓:匿名使用者
整個表示式為1啊···
14樓:有郊範圍
!(a+b)+c-1&&b+c/2=1
15樓:皚子萋萋
!(a+b)=0;1&&b=1;所以0+5-1+5/2=6
c語言的表示式這樣寫是合法的嗎?a=(b=4)+(c=6);
16樓:有錢買不起房子
在tc和vc下都能編譯通過,而且輸出為10a=(b=4)+(c=6);
()優先順序最高,所以先處理()裡面的表示式,這樣b=4,c=6,a=4+6.
如果不加(),那麼a=b+4+c=6將是錯誤的賦值語句,因為+優先=,所以先處理b+4+c,這樣等號左邊出現常量4是非法的。
17樓:匿名使用者
程式沒有錯呀,我編譯可以過,可以正常執行
18樓:待翼年代記
**編譯上沒問題啊,vc++6.0執行通過是不是結果不對啊
沒用過turbo c,不是很懂,但是windows 1.0是不是古老了一點啊,應該是lz編譯器問題吧
19樓:匿名使用者
確實沒有錯,我在後面加上getch(),立刻就讀出來了10
20樓:苗涵瑤貳聖
不合法>
操作符的級別比=要高
所以上邊的表示式就相當於a=
(3>b)=5
=操作符是從右到左結合的,所以先執行的是
(3>b)=5;
3>b的結果不能做為乙個左值,所以賦值是非法的
這個表示式編譯會報錯。
24. 設a=1,b=2,c=3,d=4,則表示式: a
21樓:匿名使用者
24、d
a果a值。
當前a=1,b=2,a是小於b的,直接取a的值,那麼結果為128、c
31、c
舉個列子初始:x=2,y=1。
x+=y相當於x=x+y=2+1→x=3;
y=x-y相當於y=3-1→y=2;
y=x-y相當於y=3-2→y=1;
x-=y相當於x=x-y=3-1→2;
所以到最後x,y的值都沒有變
22樓:匿名使用者
1.當於條件表示式:
我們先看看這個吧:
int x=a如果a給x 如果不成立的話就把b的值賦給x.
我們再來看看題目中的式子:a
c a
a:d);先算出c d,根據題目中,c=3,d=4可知c 2.這是個逗號表示式:最後式子的值就是最後乙個逗號的值;所以就是323.x+=y; x=x+y,y=y; y=x-y; x=x+y,y=x; y=x-y; x=x+y,y=xx-=y; x=y,y=x 所以選擇d 23樓: 1、da表示式的語句 ? : (a c 3、 x+=y;y=x-y;y=x-y;x-=y; 分別可以寫成一下 x=x+y; y=x-y; y=x-y; x=x-y; 建議 多看看c語言的基礎知識 24樓:匿名使用者 24. 這樣看就明了, (1<2)?1:((3<4)?1:4),先計算<, 再從右往左算,值是1, 28. 逗號運算表示式,值取最後乙個,所以x=3231. x=x+y; y=x-y; // y=(x+y)-y y=x-y; // y=(x+y)-((x+y)-y)x=x-y; // x=(x+y)-y 結果,y, x不變 25樓:匿名使用者 c語言入門書籍裡都講過了 5.寫出下面表示式的值(設a=10,b=4,c=5,d=1,x=2.5,y=3.5) (1) a%=(b%=3) (2) a+=a-=a*=a 26樓:匿名使用者 先要搞清楚雙目運算子(+=,—=,*=,/=)的格式,這個清楚了一且問題會迎刃而解! 變數 雙目運算子=表示式 例:b%=3; 它等效於 變數=變數 運算子 表示式 例:b=b%3; 開始解決問題(1)a%=(b%3); 上面的公式b%=3 等價於b=b%3=4%3=1; 然後a%=1等價於 a=a%1=10%1=0 (2)a+=a-=a*=a(這個試子還是橫噁心的!)從右往左算a*=10;運算後a=100, a-=100,運算後a=0,a+=0.運算後a=0; 給個程式 #include main() 祝大家早日學會c語言! 27樓:匿名使用者 include main() 將 y 是否和4相等的結果 0或者1 賦值給 x 查一下 c語言的運算順序和結合性就知道了。c語言中x y z 4 是什麼意思其中y等於0 先賦值 z 4 然後 判斷 y z 由於y為0,z為4,所以這個判斷不成立值為假 也就是0 最後一步就是 x 0 也就是 x x 0 0 於是 執行後 x 0y... baia b c b c a b c b c 3 4 5 4 5 3 1 1按照優du先級,先加減運算 zhi,後邏輯dao運算 而邏輯運算的幾個運算元版都是非0的,可以認權為是1因此最終結果為邏輯1 擴充套件資料c語言的運算子主要用於構成表示式,同乙個符號在不同的表示式中,其作用並不一致。下面按計... c語言的逗號運算子是從左到右運算的,結果是最右邊乙個表示式的值。y x 3 5,x 為 15 x 4,這個值被丟棄 x 15 15 15,這作為整個表示式的值,被賦給y。逗號運算子的結果為最後乙個表示式的值,x的值為15,y 15 15 30 其實沒有計算x 4,具體查資料,學了好久,也沒用過,忘的...y4在c語言中是什麼意思,xy4在c語言中是什麼意思?
C語言中,a 3,b 4,c 5 a b c b c怎麼理解
c語言中yx35,x4,x15輸出結果為什麼y等於