我找到了这篇文章:https://en.cppreference.com/w/cpp/language/eval_order
我不知道为什么i = ++i;
和i = ++i + 2;
是未定义的行为。
第一个例子:
int i = 5;
i = ++i;
结果仍为6。
如果i = ++i;
被声明为未定义的行为,那么i = ++j;
也应被声明为未定义的行为(因为赋值可能在递增之前发生?)>
第二个例子:
int i = 5; i = ++i + 2;
结果仍然是8。
如果i = ++i + 2;
被声明为未定义的行为,那么i = ++j + 2;
也应被声明为未定义的行为(因为赋值可能在增量和求和之前发生?
我发现了这篇文章:https://en.cppreference.com/w/cpp/language/eval_order我不知道为什么我= ++ i;和i = ++ i + 2;是未定义的行为。第一个例子:int i = 5; i = ++ i;结果将...
使i = ++i;
undefined behavior产生的原因是,您试图在同一表达式中读取和写入i
而没有序列点。