此示例是否导致不确定的行为? [重复]

问题描述

|                                                                                                                   这个问题已经在这里有了答案:                                                      

解决方法

是的,它是未定义的。赋值中没有序列点,%或++,并且您不能在序列点中多次更改变量。 编译器可以将其评估为:
++i;
i = i % 4;
要么
i = i % 4;
++i;
(或者是其他东西)