标签: c++ c++11 undefined-behavior
我知道这是UB:
i = i++ + 1;
实际上,clang 3.4编译器会在该行发出警告消息。
但是在下面的代码中它不再是:
int i{}; // in global scope int &f() {return i;} int main() { f() = i++ + 1; }
这个UB也是吗?
答案 0 :(得分:4)
是的,它也是未定义的行为,原因相同:i中i++的修改与分配期间i的修改无关。
i
i++