逗號運算子和逗號表示式
轉載部落格:https://www.cnblogs.com/eniac12/p/4752143.html
C語言提供一種特殊的運算子——逗號運算子。用它將兩個(或多個)表示式連線起來。
如:3+5,6+8
上式稱為逗號表示式。逗號表示式的一般形式為
表示式1,表示式2
逗號表示式的求解過程是:先求解表示式1,再求解表示式2。整個逗號表示式的值是表示式2的值
例如,上面的逗號表示式“3+5,6+8”的值為14。
又如,逗號表示式a=3*5,a*4,對此表示式的求解,賦值運算子的優先級別高於逗號運算子, 因此應先求解a=3*5,經計算和賦值後得到a的值為15,然後求解a*4,得60,整個逗號表示式的值為60(a仍為15)。
再如,一個逗號表示式又可以與另一個表示式組成一個新的逗號表示式,如(a=3*5,a*4),a+5 先計算出a的值等於15,再進行a*4的運算得60(但a值未變,仍為15),再進行a+5得20,即整個表示式的值為20。
逗號表示式的一般形式可以擴充套件為
表示式1,表示式2,表示式3,……,表示式n
它的值為表示式n的值。
逗號運算子是所有運算子中級別最低的。因此,下面兩個表示式的作用是不同的:
① x=(a=3,6*3)
② x=a=3,6*a
第①個是一個賦值表示式,將一個逗號表示式的值賦給x,x的值等於18。
第②個是逗號表示式,它包括一個賦值表示式和一個算術表示式,x的值為3。
其實,逗號表示式無非是把若干個表示式”串聯“起來。即逗號表示式純粹就是為了在只能寫一條表示式的地方寫多條表示式而設計的,根據C++ Primer,用得最多的地方就是for迴圈。例如:
for(int i = 0 , j = SIZE-1 ; i< j ; ++i , --j ) { //迴圈體 }
C語言表達能力強,其中一個重要方面就在於它的表示式型別豐富,運算子功能強,因而C使用靈活,適應性強。