社区讨论
编译器优化 Bug 滞销,帮帮我们!
学术版参与者 9已保存回复 25
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 25 条
- 当前快照
- 1 份
- 快照标识符
- @mikch6t0
- 此快照首次捕获于
- 2025/11/29 21:46 3 个月前
- 此快照最后确认于
- 2025/12/01 16:56 3 个月前
求问 G++9.3.0 的 Bug,表现如下:
省流:
CPP#include<bits/stdc++.h>
using namespace std;
long long n;
bool v[4];
int main(){
cin>>n;
for(int i=1;i<=n;++i)
v[i]=((n-i)%2==1);
cout<<v[n]<<endl;
}
直接使用 NOI Linux2.0 中附带的 g++9.3.0 进行编译。
如果编译选项为
-std=c++14,输入为 ,那么输出 ,这是正确的。如果编译选项为
std=c++14 -O2 -static,输入为 ,那么输出变为 ,这是错误的。这份代码显然没有数组越界,也没有什么 UB,求问这到底是什么已知的 Bug 吗?
PS,在非常新的 G++ 版本中,这个 Bug 似乎消失了,也可能是我记错了。
感谢 haozexu最先发现这个 Bug。本人研究无果在此发帖询问。
回复
共 25 条回复,欢迎继续交流。
正在加载回复...