关于不声明返回值类型的函数
  • 板块学术版
  • 楼主Fp0cY1tZ6Nn4Rd_
  • 当前回复8
  • 已保存回复8
  • 发布时间2024/10/2 23:12
  • 上次更新2024/10/3 10:20:04
查看原帖
关于不声明返回值类型的函数
1002529
Fp0cY1tZ6Nn4Rd_楼主2024/10/2 23:12

上次在写并查集的时候写出来了这种东西:

inline find(int x){
    if(fa[x]==x) return x;
    return fa[x]=find(fa[x]);
}

本地编译通过,但是在珂愛的 LOJ 评测姬上 CE 了。

然后我发现这个函数没有声明返回值类型。

出于好奇,我又写了这个:

#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.
2024/10/2 23:12
加载中...