C語言基礎丨運算符之逗號運算符(八)


在C語言和C++語言中,可以把多個表達式用逗號聯接起來(或者說,把這些表分達式用逗號分開),構成一個更大的表達式。其中的逗號稱為逗號運算符,所構成的表達式稱為逗號表達式。逗號表達式中用逗號分開的表達式分別求值,以最后一個表達式的值作為整個表達式的值。

逗號運算符是二元運算符,逗號表達式的一般形式為:

表達式1 , 表達式2

逗號表達式的一般形式可以擴展為:

表達式1,表達式2,表達式3……表達式n

它的值為表達式n的值。

逗號運算符確保操作數被順序地處理:先計算左邊表達式1的操作數,再計算右邊表達式2的操作數。整個逗號表達式的值是表達式2的值。

例如,逗號表達式“3+5,6+8”的值為14。

逗號運算符的特點:

優先級別最低;

自左往右執行表達式;

返回值為表達式最后一個.

逗號運算符的優先級是所有運算符中最低的。如果希望逗號運算的結果用於另一個賦值運算中,就需要使用括號。

因此,下面兩個表達式的作用是不同的:

  ① x=(a=3,6*3)

  ② x=a=3,6*a

第①個是一個賦值表達式,將一個逗號表達式的值賦給x,x的值等於18。第②個是逗號表達式,它包括一個賦值表達式和一個算術表達式,x的值為3。

其實,逗號表達式無非是把若干個表達式“串聯”起來。在許多情況下,使用逗號表達式的目的只是想分別得到各個表達式的值,而並非一定需要得到和使用整個逗號表達式的值,逗號表達式最常用於循環語句(for語句)中.

請注意並不是任何地方出現的逗號都是作為逗號運算符。例如函數參數也是用逗號來間隔的。如

  printf("%d,%d,%d",a,b,c);

上一行中的“a,b,c”並不是一個逗號表達式,它是printf函數的3個參數,參數間用逗號間隔。

如果改寫為

  printf("%d,%d,%d",(a,b,c),b,c);

則“(a,b,c)”是一個逗號表達式,它的值等於c的值。括弧內的逗號不是參數間的分隔符而是逗號運算符。括弧中的內容是一個整體,作為printf函數的一個參數。

注意:並不是任何地方出現的逗號,都是逗號運算符。很多情況下,逗號僅用作分隔符。

逗號表達式的用途:

在for循環里經常會用到,

1、在for里面的應用:

int i;int j;

for(i=0,j=0;i<5;i++,j++)

2、當分隔符:int i,j;

除了在for循環里用到外,我們在宏定義里也經常遇到:

#define SWAP(a,b)     a^=b,b^=a,a^=b

而傳統多行語句的寫法是do {...} while(0);

相比而言,很多時候在宏中還有用逗號表達式寫簡潔多了。

最后,如果你正在學習編程遇到瓶頸,感到迷茫,困惑,值得加入我的【 C語言C++學習企鵝圈子

學習交流,技術探討,面試指導,簡歷修改...還有超多源碼素材等學習資料,零基礎的視頻等着你!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM