【发布时间】:2017-12-07 13:49:15
【问题描述】:
根据 C++17,不保证以下表达式中的计算顺序。它被称为未指定的行为。
int i = 0;
std::cout<<i<<i++<<std::endl;
C++17 GCC 编译器给出以下警告:Live Demo
prog.cc: In function 'int main()':
prog.cc:6:20: warning: operation on 'i' may be undefined [-Wsequence-point]
std::cout<<i<<i++<<std::endl;
我不明白,在上面的c++17中不再表达未定义的行为,那么为什么编译器会给出未定义的警告?
【问题讨论】:
-
看起来它正在对
i++操作发出警告。 ibm.com/support/knowledgecenter/en/SSB23S_1.1.0.14/common/…。i + 1不发出警告 -
您能否发布一个链接,指向标准未指定且未定义的位置?
-
它甚至不是未指定的,它是完全定义好的。
标签: c++ undefined-behavior c++17 gcc-warning