圆括号明显的语法错误C++但编译器没有抱怨

Round bracket apparent syntactic error in C++ but compiler not complaining

本文关键字:编译器 C++ 语法 错误 圆括号      更新时间:2023-10-16

为什么编译器(g++-4.9)不抱怨这个符号?

double d=(4,5,6);

如果我调试它,d的值是6?此表达式中的圆括号是什么意思?附言我已启用 C++11

这使用逗号运算符,该运算符(不重载)仅计算左侧表达式,丢弃结果,并返回右侧表达式的结果。

由于表达式 45 没有副作用,因此您的代码等效于:

double d = 6;
这是

逗号运算符。

在逗号表达式 E1、E2 中,计算表达式 E1,其 结果被丢弃,其副作用在之前完成 表达式 E2 的计算开始(请注意,用户定义的 运算符,不能保证顺序)。

对于(4,5,6),首先计算表达式4,忽略其返回值并完成任何副作用(这里实际上没有),然后对5执行相同的操作,然后计算最后一个表达式6,返回该计算的类型和结果。