C:
int a[2] = {0, 0};
int count = 0;
a[count] = ++count;
// {0,1}
java:
int[] a = {0, 0};
int count = 0;
a[count] = ++count;
// {1,0}
js:
let a = [0,0]
let count = 0
a[count] = ++count
// [1,0]
我在用 WebStorm 调试 js 的时候发现这个问题,默认运行就和上面写的 js 行为一致,调试的时候就变成了和 C 的行为一致,这到底算哪个的 BUG 呢
1
icyalala 2021-08-03 15:23:52 +08:00 3
不要依赖 undefined behavior 的实现,对于 UB,编译器怎么解释都有可能。
如果你开了 warning,就会有类似的提示 "Multiple unsequenced modifications"。 |