cout 的未定义输出
在代码片段中:
通常假设该行为相当于:
但是,由于缺乏函数参数求值之间的序列点,不保证执行顺序。编译器可能会评估 std::operator<<<>(std::cout, a ) 之前或之后的值。
因此,正确的解释是:
这意味着结果是 undefined,因为在第二次调用中使用了增量后的 a 值运算符
C 17 修正案
在 C 17 中,规则已修改为:
评估为:
具有E1的所有副作用在E2之前测序。这确保了代码片段现在产生预期的输出“01”。
以上是为什么 `cout 的输出是的详细内容。更多信息请关注PHP中文网其他相关文章!