关于 static 关键字
  • 板块学术版
  • 楼主DX3906_ourstar
  • 当前回复5
  • 已保存回复5
  • 发布时间2025/2/8 11:45
  • 上次更新2025/2/8 14:34:29
查看原帖
关于 static 关键字
1268524
DX3906_ourstar楼主2025/2/8 11:45

rt,这个东西是不是从 C++17 开始就被和谐了?

事情是这样的——今天去打 CF Round 1000 的 VP,切 B 题的时候遇到了一点问题。先放我的代码。

#include<iostream>
#include<algorithm>
#define int long long
using namespace std;

const int N=1e5+5;

int t;
int a[N],b[N];

inline bool cmp(int a,int b){
	return a<b;
}

inline void work(){
	int n,l,r;
	static int a_,b_;//注意这里。
	cin>>n>>l>>r;
	for(int i=1;i<=n;++i)cin>>a[i],b[i]=a[i];
	sort(a+1,a+r+1,cmp);
	sort(b+l,b+n+1,cmp);
	for(int i=1;i<=r-l+1;++i)a_+=a[i];
	for(int i=l;i<=r;++i)b_+=b[i];
	cout<<min(a_,b_)<<"\n";
	return ;
}

signed main(){
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	cin>>t;
	while(t--)work();
	return 0;
}

之前在 oi-wiki 上看到过一次 static 的使用,感觉好奇,就去查了一下。菜鸟上有这样的记载:

static 的第三个作用是默认初始化为 0。

刚好,代码中需要令 a_b_ 的初值为 0,我就试着用了一下,喜提 WA

后来发现,把:

static int a_,b_;

改成:

int a_=0,b_=0;

即可 AC

接着又试了 C++20 和 C++23,都得到了一样的结果。

所以这个东西是已经成摆设了吗。

2025/2/8 11:45
加载中...