我不理解以下代码的工作原理:
#include "stdio.h"
int main(void) {
int i = 3;
while(i--) {
static int i = 100;
i--,
printf("%d\n", i);
}
return 0;
}
使用Clang或GCC编译的代码将打印以下输出:
99
98
97
有人可以解释一下这里发生了什么吗?看起来是在单个指令中实现了两个操作,且不止一次。这是否属于未定义行为?
我在C++中观察到了相同的情况。