日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

C++中signed?main和int?main的區別_C 語言

作者:ZSYL ? 更新時間: 2021-12-03 編程語言

?前言

今天看見大佬的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;
}

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

欄目分類
最近更新