逗號運算子和逗號表示式

2021-09-08 12:13:24 字數 1131 閱讀 5800

逗號運算子和逗號表示式

逗號運算子

逗號運算子是以逗號為分隔符的列表中最後乙個表示式的值。 

本質上講,逗號的作用是導致一系列運算都被順序執行。

最右邊的那個表示式的值將作為整個逗號表示式的值,其他的表示式的值將會被丟棄。

逗號運算子是所有運算子中級別最低的。

例如,有如下表示式:

var = (count = 19, incr = 10, count + 1);

1上式在計算時,首先將count的值賦給19,將10賦值給incr,然後在最後乙個表示式中,將最右邊的count+1的計算結果20賦給var。 

上面表示式中的括號是必須得,因為逗號運算子的優先順序低於賦值操作符。

例如,有如下例子:

#include

using std::cout;

int main()12

3456

78910

1112

1314

當上面的**被編譯和執行時,其結果為:

1010

1逗號表示式

逗號表示式是一種特殊的運算子,它可以將兩個表示式連線起來。 

如: 3 + 5,6 + 8 

這種型別的運算子成為逗號表示式,又稱為「順序求值運算子」。 

逗號表示式的一般形式是: 

表示式1,表示式2

求解順序是:先求解表示式1,再求解表示式2.整個逗號表示式的值時表示式2的值。 

比如上式例子中表示式3 + 5,6 + 8的值是14.

又如,逗號表示式 

a = 3 * 5, a * 4

對該表示式,可能會有兩種解讀。

一種認為,等號右邊的3 * 5,a * 4是乙個逗號表示式,先求出此逗號表示式的值,在將逗號運算子的值賦給a。比如如果a的原值是3,則逗號表示式的值為12,將12賦值給a,因此最後a的值為12.

另一種認為,a = 3 * 5是乙個賦值表示式,a * 4是另乙個表示式,二者用逗號相連,構成乙個逗號表示式。

這兩種看法哪種正確呢?

其實,賦值運算子的優先順序高於逗號運算子的優先順序,因此應該首先求解a = 3 * 5,此時a的值為15,然後再求解a*4,得60. 

整個逗號表示式的值為60.

因此,逗號表示式的一般形式可以擴充套件為:

C 中逗號表示式和逗號運算子

c 語言提供一種特殊的運算子 逗號運算子。用它將兩個表示式連線起來。如 3 5,6 8 稱為逗號表示式,又稱為 順序求值運算子 逗號表示式的一般形式為 表示式1,表示式2 逗號表示式的求解過程是 先求解表示式1,再求解表示式2。整個逗號表示式的值是表示式2的值。例如,上面的逗號表示式 3 5,6 8...

C語言逗號運算子和逗號表示式

c語言提供一種特殊的運算子 逗號運算子。用它將兩個表示式連線起來。如 3 5,6 8 稱為逗號表示式,又稱為 順序求值運算子 逗號表示式的一般形式為 表示式1,表示式2 逗號表示式的求解過程是 先求解表示式1,再求解表示式2。整個逗號表示式的值是表示式2的值。例如,上面的逗號表示式 3 5,6 8 ...

C 逗號運算子與逗號表示式

c 將賦值表示式作為表示式的一種,使賦值操作不僅可以出現在賦值語句中,而且可以以表示式形式出現在其他語句 如輸出語句 迴圈語句等 中。這是c 語言靈活性的一種表現。請注意,用cout語句輸出乙個賦值表示式的值時,要將該賦值表示式用括號括起來,如果寫成 cout3 5,6 8 稱為逗號表示式,又稱為 ...