c語言中ab,b4,ab4,是不是要從右往左計算謝謝

2021-03-04 06:45:28 字數 5930 閱讀 1035

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()

y4在c語言中是什麼意思,xy4在c語言中是什麼意思?

將 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...

C語言中,a 3,b 4,c 5 a b c b c怎麼理解

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語言中yx35,x4,x15輸出結果為什麼y等於

c語言的逗號運算子是從左到右運算的,結果是最右邊乙個表示式的值。y x 3 5,x 為 15 x 4,這個值被丟棄 x 15 15 15,這作為整個表示式的值,被賦給y。逗號運算子的結果為最後乙個表示式的值,x的值為15,y 15 15 30 其實沒有計算x 4,具體查資料,學了好久,也沒用過,忘的...