根据C++17标准,以下表达式的评估顺序没有保证。这被称为未指定行为。
C++17 GCC编译器会出现以下警告:演示。
我不理解,C++17及以上版本中已经不存在未定义的行为,那么为什么编译器会发出未定义的警告?
int i = 0;
std::cout<<i<<i++<<std::endl;
C++17 GCC编译器会出现以下警告:演示。
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++
操作上发出了警告。https://www.ibm.com/support/knowledgecenter/en/SSB23S_1.1.0.14/common/m1rhoseq.html。`i + 1` 不会引起警告。 - fredrik