社区讨论
关于不声明返回值类型的函数
学术版参与者 8已保存回复 8
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 8 条
- 当前快照
- 1 份
- 快照标识符
- @m1s0bxw6
- 此快照首次捕获于
- 2024/10/02 23:13 去年
- 此快照最后确认于
- 2025/11/04 18:15 4 个月前
上次在写并查集的时候写出来了这种东西:
Cinline find(int x){
if(fa[x]==x) return x;
return fa[x]=find(fa[x]);
}
本地编译通过,但是在珂愛的 LOJ 评测姬上 CE 了。
然后我发现这个函数没有声明返回值类型。
出于好奇,我又写了这个:
C#include<iostream>
#include<algorithm>
#include<cmath>
#include<cstring>
#include<vector>
#include<string>
#include<typeinfo>
using namespace std;
find(){}
int main(){
// freopen(".in","r",stdin);
// freopen(".out","w",stdout);
ios::sync_with_stdio(false);
cin.tie(0),cout.tie(0);
decltype(find()) var;
cout<<typeid(var).name()<<endl;
return 0;
}
输出:
i。所以函数的返回值类型应该是默认为
int 的。那为什么在评测姬上会 CE?
使用环境:
- Embarcadero Dev-C++ 6.3.
- TDM-GCC 9.2.0 64-bit Release.
-g -std=c++2a -O2 -Wall -Wextra -lm -fexec-charset=gbk.
回复
共 8 条回复,欢迎继续交流。
正在加载回复...