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

 前言

今天看见大佬的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的区别,希望对大家有所帮助。在此也非常感谢大家对我们网站的支持!

(0)

相关推荐

  • C语言中 int main(int argc,char *argv[])的两个参数详解

    C语言中 int main(int argc,char *argv[])的两个参数详解 argc是命令行总的参数个数: argv[]是argc个参数,其中第0个参数是程序的全名,以后的参数.命令行后面跟的用户输入的参数. int main(int argc, char* argv[]) { int i; for (i = 0; i<argc; i++) cout<<argv[i]<<endl; cin>>i; return 0; } 执行时敲入 F:\MYDOCU

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

     前言 今天看见大佬的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(){ doubl

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

     前言 今天看见大佬的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(){ doubl

  • C#中Convert.ToInt32()和int.Parse()的区别介绍

    Convert是一个类,继承自system.Object:int是值类型 Convert.ToInt32()内部就是调用了int.Parse()方法; Convert.ToInt32()方法可以将多种类型的数据转换成int类型,并且转换null时返回0,转换bool量时返回0或1,但是转换空字符串("")时会报错, int.Parse()只能将数字型的字符串转换成int类型:转换null时会报错.

  • C++程序中main(int argc, char *argv[])函数的参数意义

    在vs中编写C++程序时,可以往主函数里传递两个参数:main(int argc,char *argv[]).主函数不能被其它函数调用,在window操作系统下调用者是. 测试程序如下所示: #include "stdafx.h" #include "iostream" using namespace std; int main(int argc,char *argv[]) { int i; for (i = 0; i < argc; i++) { cout

  • java中JSONObject转换为HashMap(方法+main方法调用实例)

    1.首先要导入json相关的jar包 引入的jar包: (版本自行定义,可以选用使用人数偏多的版本,这样比较稳定) commons-beanutils-1.9.2.jar commons-collections-3.2.1.jar commons-lang-2.6.jar commons-logging-1.2.jar ezmorph-1.0.6.jar json-lib-2.4-jdk15.jar jar包的下载可以去下面这个网址搜索: https://mvnrepository.com/ 2

  • 基于java中byte数组与int类型的转换(两种方法)

    java中byte数组与int类型的转换,在网络编程中这个算法是最基本的算法,我们都知道,在socket传输中,发送.者接收的数据都是 byte数组,但是int类型是4个byte组成的,如何把一个整形int转换成byte数组,同时如何把一个长度为4的byte数组转换为int类型.下面有两种方式. public static byte[] int2byte(int res) { byte[] targets = new byte[4]; targets[0] = (byte) (res & 0xf

  • java中long(Long)与int(Integer)之间的转换方式

    我就废话不多说了,大家还是直接看代码吧~ public static void main(String[] args) { // 1.将long型转化为int型,其中int.long是基础类型 long a = 10; int b = (int) a; System.out.println("1.将long型转化为int型:" + b); // 2.将int型转化为long型,其中int.long都是基础类型 int a1 = 10; long b1 = a1; System.out.

  • 你知道在Java中Integer和int的这些区别吗?

    一.基本概念(重要) Integer 是 int 的包装类,int 则是 java 的一种基本数据类型: Integer 变量必须实例化后才能使用,而int变量不需要: Integer 实际是对象的引用,当new一个 Integer时,实际上是生成一个指针指向此对象:而 int 则是直接存储数据值: Integer的默认值是null,int的默认值是0. 二.拓展 基于以上的一些概念,这里我们拓展一下,对于Integer包装类型与int基本数据类型之间数值相互比较的结果进行一下说明,这个也可能在

  • MySQL中int (10) 和 int (11) 的区别

    mysql 中整数数据类型: 不同类型的取值范围: 不同数据类型的默认v显示宽度: 显示的宽度跟负号没有关系,它只在人工设置了 ZEROFILL 属性有效.一旦人工设置了 ZEROFILL 属性,MySQL 会自动设置 UNSIGNED 属性(即 ZEROFILL 不能存储负数). 那取值范围和显示宽度到底有什么关系呢?利用 tinyint 做了个实验, 首先创建一张表如下: mysql> desc test_integer; +-----------+------------+------+-

随机推荐