关于signed main()不报超时与int main()报超时

今天洛谷刷题时,遇到了一个有点难的题很简单的小问题,然后看了题解,然后发现大佬用的这种signed main()

#include<bits/stdc++>
#define int long long
using namespace std;
signed main() {
return 0
}

大佬过了,当时的我不以为意,只是觉得用int来替换long long,小问题,没关注。

学着大佬思路用int main()过了一遍代码,然后我就妥妥地超时了。

这个时候才注意到signed main()和int  main()的区别:

于是在网上搜了一下原因:

首先,众所周知,c++的main函数有着严格的要求:

(根据最新的ANSI C++标准,主函数应该返回一个整型数值,返回这个值的目的是为了将程序的运行结果告知系统,比如程序是否正常结束,是否异常终止等等。一般地,如果返回0表示程序正常结束,返回其他值则表示程序异常终止。)

即必须以int/signed作main函数的类型

当然就是说我们定义主函数时,必须写"int main"或"signed main"!

这个signed是什么意思呢?

就是简单的signed int :有符号整型。

在定义 int为longlong后,int main表示返回一个longlong型,而非整型,所以此时只能用signed main 去返回一个整型。

最终,其实它俩没啥区别。

而为什么洛谷int main()报超时,而定义#define int long long 之后,signed  main()却没有报错,看了一些刷题大佬的说法,貌似可能也许是欺骗hack。

总之是投机取巧的小技巧!

如果有啥不对,欢迎指正!

  • 14
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值