为何C++代码int X = (2,4);可编译且X被赋值为4?
C++中
int X = (2,4);赋值结果为4的原因 这是因为你用到了C里的逗号运算符,它是C中优先级最低的运算符之一,规则很明确:
- 按从左到右的顺序依次计算逗号分隔的每一个表达式
- 整个逗号表达式的最终结果,是最右侧那个表达式的值
放到你的代码里:
- 表达式
(2,4)会先计算2,但这个值会直接被丢弃,不会被使用 - 接着计算
4,整个表达式的结果就是4,所以变量X最终被赋值为4
另外要注意区分:如果是函数调用里的逗号(比如some_func(2,4)),那只是参数的分隔符,不是逗号运算符;但你这里加了括号(2,4),就明确构成了一个逗号运算符表达式。
内容的提问来源于stack exchange,提问作者Chanoch
相关产品推荐
相关产品推荐

