[英]What will i++ + i++ evaluate to in C++17?
看起来我们正在为C ++获得一个全新的“面试问题”(我希望不是,实际上)。
众所周知,在C ++ 17之前,它是未定义的行为 ,但它是否会从C ++ 17开始明确定义 ?
由于目前似乎没有一个编译器实现了这个C ++ 17的修改,任何人都可以解释一下,根据表达式评估规则, x
的值在下面的代码中?
int i = 0;
int x = i++ + i++;
阿利斯代尔梅雷迪思提到这个例子在这里他CppCon 2016的谈话,但它并不完全清楚,我的最终值是什么x
会(虽然它似乎什么他要说的是,这将是至少1)。
显然,在这种情况下, i
本身将在表达式结尾处为2。
P0145R3(PDF)不会更改所有表达式的评估顺序。 它只影响少数运营商。 二进制加法不在该列表中。
因此,上述代码仍未定义。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.