C++中signed main和int main的区别
程序员文章站
2022-03-04 14:31:39
前言今天看见大佬的c++代码,主函数"int main"打成了"signed main",心生疑问,便去查阅。#pragma gcc optimize(3,"inline","ofast");#inc...
前言
今天看见大佬的c++代码,主函数"int main"打成了"signed main",心生疑问,便去查阅。
#pragma gcc optimize(3,"inline","ofast"); #include<bits/stdc++.h> using namespace std; #define int long long typedef long long ll; signed main(){ double d;cin>>d; printf("%.1f",d/59535); }
因为头文件声明:#define int long long
,然后int main改成signed main就行了
个人平时写代码最简单的缺省源是:
#include<bits/stdc++.h> #define int long long using namespace std; signed main(){ return 0; }
注意到 #define int long long
而 main 函数必须返回一个 int 值,所以不能使用 int main()。
那怎么办呢?通常使用 signed main,因为 signed 等效替代于 signed int,也就是有符号整型,这与 int 别无二致,并且不会导致奇怪的 ce。
int本来就是signed int。int = signed int = signed,就像unsigned = unsigned int
当你不确定过程中会不会爆 int 的时候,可以这么写。
同样的字节数,如果保存符号位,范围为正负,数字位相对少一,绝对值范围小
总结:
头文件声明#define int long long
,防止爆int
主要区分
#define ll long long int main(){ ll int x; scanf("%lld",&x); } #define int long long signed main(){ ... }
一种独特的定义longlong的方法:
#include<bits/stdc++.h> #define int long long using namespace std; const int p=1e9+3; int t,n,m,a,fac[100010]={1}; signed main() { for(int i=1;i<=100000;i++) fac[i]=fac[i-1]*i%p; scanf("%lld",&t); while(t--) { int res=1,ans=1; scanf("%lld %lld",&n,&m); for(int i=1;i<=n;i++) scanf("%lld",&a),res=res*fac[a]%p; for(int i=1;i<=m;i++) scanf("%lld",&a),ans=ans*fac[a]%p; if(res==ans) puts("equal"); else puts("unequal"); } return 0; }
以上所述是小编给大家介绍的c++中signed main和int main的区别,希望对大家有所帮助。在此也非常感谢大家对网站的支持!
推荐阅读
-
在C++中,函数名前的const和函数名后的const的区别详解
-
C++中重载、覆盖和隐藏的区别,以及适用场景
-
C++中static_cast/const_cast/dynamic_cast/reinterpret_cast的区别和使用
-
java中int和Integer的区别(详解)
-
ASP中CINT和INT的区别
-
面试知识点总结——C++中公有继承、私有继承和保护继承的区别
-
C/C++编程笔记:数据类型中 float 和 double 的区别!细节讲解
-
关于int main( int argc, char* argv[] ) 中arg和argv参数的解析及调试
-
关于int main( int argc, char* argv[] ) 中arg和argv参数的解析及调试
-
C++ main函数中参数argc和argv相关定义与研究