在C中用括号分配两个值
C中的这段代码做了什么:
p = (1, 2.1);
我们对p
什么了解?
C中的逗号运算符是一个序列点 ,这意味着用逗号分隔的表达式从左到右执行。 整个表达式的值是最右边的表达式的值,在你的情况2.1
,它被赋值给变量p
。
由于示例中的表达式没有副作用,因此在此处使用逗号分隔符毫无意义。
另一方面,括号是重要的,因为赋值运算符( =
)比逗号运算符(它具有更高的优先级)更强,并且将在没有括号的逗号运算符之前进行求值。 结果将是p == 1
。
这是一个错误。 逗号运算符类似于;。 它做一个,然后做另一个。 所以(1,2.1)评估为2.1
p将是2.1(或2,如果p是一个int并且需要被截断…)
将从左到右评估所有逗号分隔表达式,并返回最右侧表达式的值。
所以p会2.1。