精华内容
下载资源
问答
  • int = long = long int 精度一样。intlong 的长度 有操作系统决定, 通常 2者长度一样。int 取值范围 -2147483648~2147483647 long long的最大值:9223372036854775807long long的最小值:-...

    int = long = long int  精度一样。

    int 与long 的长度 有操作系统决定, 通常 2者长度一样。

    int 取值范围 -2147483648~2147483647   

    long long的最大值:9223372036854775807

    long long的最小值:-9223372036854775808

    计算超过 21亿 以上的数字 , 最好 用long long int 避免值越界



    展开全文
  • C/C++:long intlong long的区别

    万次阅读 多人点赞 2018-12-25 11:07:02
    long int  long intlong,给人的感觉好像是长整型,但实际上,它和int一样,只有32位。cppreference给出的定义是—— int - basic integer type. The keyword int may be omitted if any of the modifiers ...

    long int

      long int即long,给人的感觉好像是长整型,但实际上,它和int一样,只有32位。cppreference给出的定义是——

    int - basic integer type. The keyword int may be omitted if any of the modifiers listed below are used. If no length modifiers are present, it’s guaranteed to have a width of at least 16 bits. However, on 32/64 bit systems it is almost exclusively guaranteed to have width of at least 32 bits.
    long - target type will have width of at least 32 bits.

      在实际的使用中,long与int几乎没有区别,比如——

    #include<stdio.h>
    
    int main(){
    	long l = 10000000;
    	int i = 10000000;
    	printf("size of long:%d\n",sizeof(long));
    	printf("size of int:%d\n",sizeof(int));
     	printf("l = %d\n",l);
     	printf("i = %d\n",i);
    	return 0;
    }
    

    在这里插入图片描述
      既然long int与int相同,那么为什么还有long int这种尴尬的类型呢?
      原因是早期的C编译器定义了long int占用4个字节,int占用2个字节,long int是名副其实的长整型。在ANSI C的标准中,对长整型的定义也是long int应该至少和int一样长,而不是long int 一定要比int占用存储字节长。所以,正确的关系应该是——
    longintshortlong\geq int\geq short
      新版的C/C++标准兼容了早期的这一设定。

    long long

      long long则不同,long long是C++的64位整型的基本类型,“现任”长整型,从C99开始引入这个概念,在后续的标准中完善概念和定义,C++11官方正式标准如下——

    long long - target type will have width of at least 64 bits.(since C++11)

      long long占用8个字节,数据表示范围也从int的[231,2311][-2^{31},2^{31}-1],升级到[263,2631][-2^{63},2^{63}-1]

    #include<stdio.h>
    
    int main(){
    	long l = 10000000;
    	int i = 10000000;
    	long long ll = 100000000000000;
    	printf("size of long:%d\n",sizeof(long));
    	printf("size of int:%d\n",sizeof(int));
    	printf("size of long long:%d\n",sizeof(long long));
     	printf("l = %d\n",l);
     	printf("i = %d\n",i);
     	printf("ll = %lld\n",ll);
    	return 0;
    }
    

    在这里插入图片描述
      long long是C++的正式标准,这也就意味着,该类型不会因为编译器或者开发平台的不同而有所差异,放之四海而皆准,而且与一些系统函数、类库都有很好的交互(如常见的printf、scanf、cin和cout等)。与之相反,出身MS的__int64就有点不受待见了,在不同的编译器上可能水土不服。

    __int64

      在早期的代码中,可能会遇到__int64这种类型,这应该算是“历史遗留”问题。早期的C/C++标准中并没有规定64位长整型的规范,因此不同的编译器对这一模糊概念有不同的定义,我们熟知的VC6.0采用了__int64这种类型来表示64位长整型——

    #include<iostream>
    #include<cmath>
    using namespace std;
    int main(){
    	__int64 i64 = -pow(2,63);
    	cout<<"__int64:"<<sizeof(__int64)<<endl; 
    	cout<<"i64 = "<<i64<<endl;
    	return 0;
    }
    

    在这里插入图片描述
      与long long具有相同的效果,但是,__int64并不是正式规范,比如,如果你使用的是MinGW的编译器的话,打开__int64的定义会发现——

      VS 2017虽然把__int64作为了一种内置类型,但是也做了类似的处理,使得__int64与long long没有肉眼可见的差别。但如果你使用的开发环境比较早期,那么可能就要专门研究一下__int64了。比如说,古老的VC6.0并没有long long这种类型,而__int64的输入输出,又需要printf和%I64d的配合,而不是%lld或者直接用cout。

    总结

      C/C++与Java等语言不同,具有较高的自由度,由于某些历史原因,某些概念在不同的平台上有不同的解释,虽然现在新版本的C++标准和编译器都在做兼容性工作,你可以在__int64与long long之间无缝切换,但至少,我们要清楚两者的不同。

    类型 存储字节 表示范围
    int 4 -2147483648~2147483647
    short int 2 -32768~+32767
    long 4 -2147483648~2147483647(二十亿,约101010^{10}
    long long 8 9223372036854775808~+9223372036854775807(九百亿亿,约101910^{19})
    __int64 8 9223372036854775808~+9223372036854775807

    参考链接

    1.https://blog.csdn.net/qq_31736627/article/details/52912691
    2.https://en.cppreference.com/w/cpp/language/types
    3.https://www.cnblogs.com/ChenDinghao/p/6480937.html
    4.https://blog.csdn.net/sk18192449347/article/details/55000087

    展开全文
  • hd: short int d: int ld: long int lld: long long int 以下转自:...Linux基本数据类型大小——int,char,long int,long long int 在Linu
    hd: short int 
    d: int
    ld: long int

    lld: long long int


    以下转自:http://blog.163.com/zheng_he_xiang/blog/static/186505326201110272018548/

    Linux基本数据类型大小——int,char,long int,long long int

    在Linux操作系统下使用GCC进行编程,目前一般的处理器为32位字宽,下面是/usr/include/limit.h文件对Linux下数据类型的限制及存储字节大小的说明。
      /* We don't have #include_next.   Define ANSI <limits.h> for standard 32-bit words.  */
        /* These assume 8-bit 'char's, 16-bit 'short int's,   and 32-bit 'int's and 'long int's.  */
        1.char数据类型
        char类型数据所占内存空间为8位。其中有符号字符型变量取值范围为?128~127,无符号型字符变量取值范围为0~255.其限制如下:
        /* Number of bits in a 'char'. */
        #  define CHAR_BIT 8          //所占字节数
        /* Minimum and maximum values a 'signed char' can hold.  */  //有符号字符型范围
        #  define SCHAR_MIN (-128)
      #  define SCHAR_MAX 127
        /* Maximum value an 'unsigned char' can hold.  (Minimum is 0.)  */ //无符号字符型范围
        #  define UCHAR_MAX 255
        /* Minimum and maximum values a 'char' can hold.  */
        #  ifdef __CHAR_UNSIGNED__
        #   define CHAR_MIN 0
        #   define CHAR_MAX UCHAR_MAX
        #  else
        #   define CHAR_MIN SCHAR_MIN
        #   define CHAR_MAX SCHAR_MAX
        #  endif
        2.short int数据类型
        short int类型数据所占内存空间为16位。其中有符号短整型变量取值范围为?32768~32767,无符号短整型变量取值范围为0~65535.其限制如下:
        /* Minimum and maximum values a 'signed short int' can hold.  */ // 有符号短整型范围
        #  define SHRT_MIN (-32768)
      #  define SHRT_MAX 32767
        /* Maximum value an 'unsigned short int' can hold.  (Minimum is 0.)  */
        // 无符号短整型范围
        #  define USHRT_MAX 65535
        3.int数据类型int类型数据所占内存空间为32位。其中有符号整型变量取值范围为-2147483648~2147483647,无符号型整型变量取值范围为0~4294967295U.其限制如下:
        /* Minimum and maximum values a 'signed int' can hold.  */  //整形范围
        #  define INT_MIN (-INT_MAX - 1)
     #  define INT_MAX 2147483647
        /* Maximum value an 'unsigned int' can hold.  (Minimum is 0.)  */
        //无符号整形范围#  define UINT_MAX 4294967295U
        4.long int数据类型
        随着宏__WORDSIZE值的改变,long int数据类型的大小也会发生改变。如果__WORDSIZE的值为32,则long int和int类型一样,占有32位。在Linux GCC4.0-i386版本中,默认情况下__WORDSIZE的值为32.其定义如下:
        //come from /usr/include/bits/wordsize.h
        #define __WORDSIZE 32
        在64位机器上,如果__WORDSIZE的值为64, long int类型数据所占内存空间为64位。其中有长整型变量取值范围为-9223372036854775808L~9223372036854775807L,无符号长整型变量取值范围为0~18446744073709551615UL.其限制如下:
        /* Minimum and maximum values a 'signed long int' can hold.  */ //有符号长整形范围
        #  if __WORDSIZE == 64
        #   define LONG_MAX 9223372036854775807L
        #  else
        #   define LONG_MAX 2147483647L
        #  endif
        #  define LONG_MIN (-LONG_MAX - 1L)
     
      /* Maximum value an 'unsigned long int' can hold.  (Minimum is 0.)  *///无符号长整形范围
        #  if __WORDSIZE == 64
        #   define ULONG_MAX 18446744073709551615UL
        #  else
        #   define ULONG_MAX 4294967295UL
        #  endif
        5.long long int数据类型
        在C99中,还定义了long long int数据类型。其数据类型限制如下:
        #  ifdef __USE_ISOC99
        /* Minimum and maximum values a 'signed long long int' can hold.  *///无符号长长整形范围
        #   define LLONG_MAX 9223372036854775807LL
        #   define LLONG_MIN (-LLONG_MAX - 1LL)
      /* Maximum value an 'unsigned long long int' can hold.  (Minimum is 0.)  *///有符号长长整形范围
        #   define ULLONG_MAX 18446744073709551615ULL
        #  endif /* ISO C99 */


    展开全文
  • Objective - c基本数据类型有: int / long / long int / long long / long long int  在ObjectiveC中intlong的长度由操作系统决定,通常情况下int 的长度与long 的长度就是一样的,比如IOS!也就是说在IOS...
        Objective - c基本数据类型有:    int     /    long    /   long int   /   long long    /    long long int   

        在ObjectiveC中int与long的长度由操作系统决定,通常情况下int 的长度与long 的长度就是一样的,比如IOS!也就是说在IOS里int == long

        然后long 其实就是 long int的简写,同理 long long就是 long long int的简写。

     

        综上所述,在IOS中:

        int == long == long int

        long long int == long long == int * 2


        也就说我为了实现存储超过42亿以上的数字必须使用long long 类型!

        NSLog(@"%li",xxx);

        NSLog(@"%lli",xxx);

    展开全文
  • 关于long long intint 的区别,在这个题目上。 这道题用^即可解决 但是用int 过不了oj, long long int 才行。 按题目显示的也是int四个字节啊,这是为啥?
  • C语言中intlong intlong long的区别

    万次阅读 2016-10-08 19:48:08
    1、关于intlong int (1)在VC下没有区别。两种类型均用4个字节存放数据。 (2)VC是后出的编译器,之前有很多早期的C编译器,在早期编译器下long int占4个字节,int占2个字节。 (3)之所以有“整型”和“长...
  • int ,long long int 数据范围

    千次阅读 2018-05-14 21:36:13
    在编译器上输入printf("%d",sizeof(类型));例如 printf("%d",sizeof(int)); 无论32位机还是64都是4字节,也... 也就是-2^32~2^32-1(除去0,要减1) 至于long long int知道方法自己尝试吧。...
  • long long int的格式输入与输出

    千次阅读 2020-10-28 22:38:36
    long long int number; }stu; int main() { stu stu1; scanf("%d;%f,%f,%f", &(stu1.number), &(stu1.grade[0]), &(stu1.grade[1]), &(stu1.grade[2])); printf("The each s
  • 请问 64位系统下 unsigned long long int 和 unsigned long int是否有区别? 如果没有区别的话,我是否可以在我的代码中这样定义保证在64位和32位的系统都可以使用。 而且使用 %llu 不会产生报警 谢谢 #define ...
  • 写程序老是忘记这几个范围,有次没考虑范围用int报错了,写在这记一下 类型 存储字节 表示范围 int / long int 4 -2147483648~21474836...
  • float double int long long int的精度

    千次阅读 2017-11-07 20:36:59
    范围就不多说,根据字节数就可以大致判断范围。主要说一下精度(有效数字位数) int 最大值 2147483647 (最大)有效数字...long long int 最大值 9223372036854775807 (最大)有效数字位数(18-19) unsigned
  • 打印unsigned long long int

    万次阅读 2012-05-28 22:09:21
    如果你想使用inttypes.h中的int32_t, int64_t,uint64_t等数据类型,如何对其进行printf是需要仔细考虑的。...32位平台: typedef unsigned long long int uint64_t; 64位平台: typedef unsigned long int uint64
  • 以下所有讨论都是在sizeof(int)和sizeof(long int)都等于4的基础上进行的.intlong int二者的范围是一致的,都是-2^31---2^31-1,能表示的最大值是0x7FFFFFFF;unsigned int和unsigned long int二者的范围也是一致的,...
  • int, long int, long long int, _int64範圍

    千次阅读 2015-04-12 20:41:54
    unsigned int 0~4294967295 int -2147483648~2147483647 unsigned long 0~4294967295 long -2147483648~2147483647 long long的最大值:9223372036854775807 long long的最小值:-9223372036854775808 ...
  • 关于long long int 应该用什么占位符

    千次阅读 2020-06-27 08:03:37
    关于long long int 应该用什么占位符 在我的环境下,使用ll占位符会出现下面的警告 warning: unknown conversion type character ‘l’ in format [-Wformat=] 15 | scanf("%lld",&data[i]); 因为,;lld在我的编译...
  • int类型是有符号整型,即int类型的值必须是整数,可以是正整数,负整数,零。 int类型取值范围因计算机系统而异。早起的16位IBM PC兼容机使用16位来存储一个int值,其取值范围是-32769 ~32768。目前个人计算机一般...
  • Android 进度条算法 更新进度条算法 long int
  • OJ笔记:printf 打印long long int

    千次阅读 2014-01-09 21:46:57
    用 printf 打印 long long int 时,要用 printf("%lld\n", mul);
  • 有个long int data;我输出的时候printf("data is %d", data);出现下面警告 自己竟然不知道 长整型怎么打印出来,日了狗。 2、解决办法 md,m为指定的输出字段的宽度。如果数据的位数小于m,则左端补以空格,若...
  • Qt Json类 对 long long int 类型的支持

    千次阅读 2018-02-23 15:36:26
    也就是当long long int 类型的整型作为json字段时,该值很可能超过QJsonValue所支持的范围。例如,如果在服务器返回的json串中,有一个字段是整型(long long), 那么在转换的时候可能出错。即 {"Id": 9....
  • Linux基本数据类型大小——int,char,long int,long long int   转自:http://blog.163.com/zheng_he_xiang/blog/static/186505326201110272018548/    在Linux操作系统下使用GCC进行编程,目前一般...
  • intlong int,short int所占字节

    千次阅读 2013-04-27 16:11:29
    所以,intlong int,short int的宽度都可能随编译器而异。但有几条铁定的原则(ANSI/ISO制订的): 1 sizeof(short int) 2 sizeof(int) 3 short int至少应为16位(2字节) 4 long int至少应为32位。 ...
  • 首先我们先测试下各个类型数据在32位系统中所占的字节数,测试代码如下: int s = sizeof(short); ... int li = sizeof(long int); int l = sizeof(long); int ll = sizeof(long long); co
  • C语言中intlong int的区别

    千次阅读 2016-12-12 11:49:13
    如果不在这个范围内就要使用长整型(long int)来表示了。 在Visual C++中,系统为整型(int)数据分配四个字节,表示的范围在-2147483648到2147483647之间,因此在Visual C++中没有必要使用长整型,但便于规范和好记...
  • C语言中关于intlong intlong long 的区别

    万次阅读 多人点赞 2014-08-21 09:28:15
    (2)VC是后出的编译器,之前有很多早期的C编译器,在早期编译器下long int占4个字节,int占2个字节。 (3)之所以有“整型”和“长整形”两种不同类型,是C语言在诞生时发明者规定好的,前者存储的整数的值域小于...
  • intlong int为什么字节数是一样的?

    千次阅读 2015-07-12 18:19:05
    intlong int为什么字节数是一样的?
  • VC6中定义下面类型typedef long long int int64_t ;出现错误

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,450,234
精华内容 980,093
关键字:

longint