2017-05-31 116 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赋值运算符的优先级高于逗号运算符的优先级。 –