
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 不要依赖 undefined behavior 的实现,对于 UB,编译器怎么解释都有可能。 如果你开了 warning,就会有类似的提示 "Multiple unsequenced modifications"。 |