逗號運算子和逗號表示式
逗號運算子
逗號運算子是以逗號為分隔符的列表中最後乙個表示式的值。
本質上講,逗號的作用是導致一系列運算都被順序執行。
最右邊的那個表示式的值將作為整個逗號表示式的值,其他的表示式的值將會被丟棄。
逗號運算子是所有運算子中級別最低的。
例如,有如下表示式:
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 稱為逗號表示式,又稱為 ...