2017-05-31 194 views
-2

我已經聲明過變量和它們的值,但我從來沒有在一行之前完成過。逗號運算符是什麼意思?

如果我寫

A, B = 0.0, 2; 

這是否意味着

A = 0 

B = 2? 
+0

你嘗試過嗎? – Gam

+3

它會在Python中,但不會在C. –

+1

這不是** C ***中的*變量聲明。 –

回答

5

這種表達

A, B = 0.0, 2; 

是一個帶有逗號運算符的表達式(這裏是兩個逗號運算符)。它可以像

(A), (B = 0.0), (2); 

結果變量B將得到值0.0。變量A將保持不變。

從C標準(6.5.17逗號運算符)

2逗號操作者的左操作數作爲空隙 表達式求值;在它的評估和右操作數的 之間有一個序列點。然後評估右操作數;結果 具有其類型和值

所以上面的表達式的值是2和類型是int。表達式的值不被使用。所以唯一的副作用是將值0.0分配給變量B

+1

不會B是2嗎?我相信由逗號運算符分隔的序列的結果是評估_last_元素。因此,分配的值將是2.這也是你的報價所說的:「結果有它的類型和價值」。 –

+0

@PaulOgilvie如果運算符的優先級高於= – Ctx

+3

@PaulOgilvie賦值運算符的優先級高於逗號運算符的優先級。 –