1樓:匿名使用者
a=a+(b+1)
b=b+4c=b
2樓:匿名使用者
這是關於符號優先順序,還有,號的用法,實際工作中不會用到的。如果你參加什麼亂碼大賽可能會用到,我的建議還是不要糾結這些莫名其妙的表示式,有時間還是實實在在多用指標,指標的內容得花很多時間
3樓:匿名使用者
a+=1的意思是a=a+1,++b意思是使用b時b的值為b+1。然後帶入,c=(a=a+(b+1),b=b+4);
4樓:oath斑駁
c=(a=a+(b+1),b=b+4)
c語言c=(a+=++b,b+=4)是什麼意思?
5樓:匿名使用者
考的是c語言運算子優先順序問題,
c=(a+=++b,b+=4)
1、++運算子優先順序高於+=;
2、,運算子優先順序最低,先求,號前的表示式,再求,後的表示式,最後結果為,後的表示式結果。
假設a=5,b=8
首先,a+=++b,得到 b = b+1 = 9; a= a+b= 5 + 9 = 14;
其次,b+=4,得到b = b+4 = 13;
最後,c=13.
建議你上機程式設計執行。
6樓:
++b;
a=a+b;
b=b+4;
c=b;//c等於最後一次計算的結果
c語言中c=(++a,b++,a++,++b);表示的是什麼意思?
7樓:匿名使用者
c=(++a,b++,a++,++b);逗號運算子是從左往右做取最後一個表示式的值++a後a的值為11,b++後b的值為11,a++後a得值為12,++b後b的值為12++b的意思是先做自增然後取b得值。所以整體c輸出為12另b++表示先取b得值為表示式的值然後在做自增。a++和++a也是同理。
8樓:匿名使用者
最後c=12。(++a,b++,a++,++b);是個逗號表示式,從左到右計算。c的結果由表示式最右邊的式子決定。
++a之後a=11;b++之後b=11;a++之後a=12;++b之後表示式值為12,b的值為12。
9樓:萊玉巧辛嫻
b是一個整型變數,a也是一個整型變數,c是一個整型陣列,所以c[a],就是取c陣列裡,a變數所指下標位置的值,b+=c[a]
就是等價於
b=b+c[a]
求c語言大神給我講解下下圖中的c=(a-=a-5),(a=b,b+3); 的運算過程以及中間逗號的意思
10樓:匿名使用者
首先,請搞明白一種表示式叫逗號表示式,就是將一組語句連著寫出來,中間用逗號分隔;表示式的取值是最後一個語句的取值。
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
11樓:黑丶雨
逗號運算子:
在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
12樓:匿名使用者
中間的逗號起到分隔作用,逗號是一個雙目運算子(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
13樓:無敵玉琴
a=0;b=0;c=5
c語言裡a=(c++,b++)是什麼意思?c語言新手謝了
14樓:匿名使用者
等價於c = c + 1;
a = b;
b = b + 1;
不過沒有哪個正常人會寫成a=(c++,b++)
15樓:葉豐風格
語法寫錯了吧,沒見過這樣賦值的
C語言賦值語句,C語言中賦值語句有什麼規則要求?
選ab中取模右邊不是整數 c中賦值號左側不是一個變數 d中第二個賦值號左側不是一個變數 c語言中通過 運算子來實現賦值,有時候也用它來進行初始化,在c語言中初始化和賦值是完全兩個不同的概念。比如下面的 int a 10 這是初始化a 0 10 這是賦值 初始化是一個順序點,編譯器保證每一個順序點都執...
C語言中的語句while scanfd dm,nEOF怎麼跳出這個while迴圈
linux系統下 需要輸入ctrl d 在windows下,也就是命令列視窗 需要輸入ctrl z在螢幕上出現 z後,再按回車即可。設計上是輸入兩次回車就退出 其實程式設計時,可以改為按某個鍵,退出迴圈的。ctrl z 再按一到兩次回車 vs要連續輸入三次 enter才行 關於c語言求精確解釋這個迴...
C語言中,swichcase語句中,case後面只能
準確的說case後面跟來的源是一個確定的值,由於常量表示式也好,邏輯表示式 在c語言中邏輯表示式的值只有兩種而且是整形數值1或者0 也好都是返回的一個確定的值。因此switch case語句中case後可以跟邏輯表示式。注 剛剛我試了一下,確實可以 switch 只能跟確定的值,而且只能是整形,字元...