正常的代码输出0:(整形溢出)
#include <bits/stdc++.h>
using namespace std;
int main()
{
int sum = 0,i;
for (i = 1; i <= 200000; i++)
{
sum += i;
}printf("%d",sum > 0);
return 0;
}
《厌氧:开O2之后输出1》
#pragma GCC optimize(2)
#include <bits/stdc++.h>
using namespace std;
int main()
{
int sum = 0,i;
for (i = 1; i <= 200000; i++)
{
sum += i;
}printf("%d",sum > 0);
return 0;
}
《O(998244853),重新输出0》
#pragma GCC optimize(2)
#pragma GCC optimize(998244853)
#include <bits/stdc++.h>
using namespace std;
int main()
{
int sum = 0,i;
for (i = 1; i <= 200000; i++)
{
sum += i;
}printf("%d",sum > 0);
return 0;
}
这是什么神奇玩意?