服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - C/C++ - C++中signed main和int main的区别

C++中signed main和int main的区别

2022-03-11 13:28ZSYL C/C++

这篇文章介绍了C++中signed main和int main的区别,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

 前言

今天看见大佬的C++代码,主函数"int main"打成了"signed main",心生疑问,便去查阅。

?
1
2
3
4
5
6
7
8
9
10
#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就行了

个人平时写代码最简单的缺省源是:

?
1
2
3
4
5
6
#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

主要区分

?
1
2
3
4
5
6
7
8
9
10
#define ll long long
int main(){
    ll int x;
    scanf("%lld",&x);
}
 
#define int long long
signed main(){
    ...
}

一种独特的定义longlong的方法:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#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的区别,希望对大家有所帮助。在此也非常感谢大家对服务器之家网站的支持!

原文链接:https://blog.csdn.net/qq_46092061/article/details/121788512

延伸 · 阅读

精彩推荐