社区讨论

关于不声明返回值类型的函数

学术版参与者 8已保存回复 8

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
8 条
当前快照
1 份
快照标识符
@m1s0bxw6
此快照首次捕获于
2024/10/02 23:13
去年
此快照最后确认于
2025/11/04 18:15
4 个月前
查看原帖
上次在写并查集的时候写出来了这种东西:
C
inline 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 条回复,欢迎继续交流。

正在加载回复...