int printf(const char *, ...);
int a[5][2];
short b;
int c, d;
int e(int f) {
if (f >= 100)
return 5;
return 2;
}
int main() {
for (;;) {
c = 1;
for (; e(5) + c - 2 >= 0; c--) {
b = 0;
for (; b <= 1; b++)
a[c + 2][b] = 8;
}
break;
}
for (d=2; d < 3; d++)
printf("%d\n", a[d][0]);
}
对于如下代码,gcc 以及bisheng/clang -O0/1/2/3 都输出8, 但bisheng -Os 输出0.
int printf(const char *, ...); int a[5][2]; short b; int c, d; int e(int f) { if (f >= 100) return 5; return 2; } int main() { for (;;) { c = 1; for (; e(5) + c - 2 >= 0; c--) { b = 0; for (; b <= 1; b++) a[c + 2][b] = 8; } break; } for (d=2; d < 3; d++) printf("%d\n", a[d][0]); }错误如下:
编译器版本如下: