当前位置:首页 > 专题范文 > 公文范文 >

2023年度C语言中整数short,int,long

时间:2023-05-18 11:20:08 来源:网络

整数是编程中常用的一种数据,C语言使用int来定义整数(int是integer的简写)。欢迎大家阅读!更多相关信息请关注相关栏目!现代操作系统中int一般占用4个字节内存,共计32位(Bit)下面是小编为大家整理的2023年度C语言中整数short,int,long,供大家参考。

2023年度C语言中整数short,int,long

  整数是编程中常用的一种数据,C语言使用int来定义整数(int 是 integer 的简写)。欢迎大家阅读!更多相关信息请关注相关栏目!

  现代操作系统中 int 一般占用4个字节内存,共计32位(Bit)。如果不考虑正负数,当所有的位都为1时它的值最大,为 232-1 = 4,294,967,295 ≈ 43亿,这是一个很大的数,实际开发中很少用到,而诸如 1、99、12098 等较小的数使用频率反而较高。

  使用4个字节保存较小的整数绰绰有余,会空闲出两三个字节来,这些字节就白白浪费掉了,不能再被其他数据使用。现在个人电脑的内存都比较大了,配置低的也有2G,浪费一些内存不会带来明显的损失;而在C语言被发明的早期,或者在单片机和嵌入式中,内存都是非常稀缺的资源,所有的程序都在尽力节省内存。

  反过来说,43亿虽然已经很大,但要表示全球人口数量还是不够,必须要让整数占用更多的内存,才能表示更大的值。

  让整数占用更少的内存可以在 int 前边加short,让整数占用更多的内存可以在 int 前边加long,例如:

  short int a = 10;

  short int b, c = 99;

  long int m = 102023;

  long int n, p = 562131;

  这样 a、b、c 只占用2个字节的内存,而 m、n、p 可能占用8个字节的内存。

  也可以将 int 省略,只写 short 和 long,如下所示:

  short a = 10;

  short b, c = 99;

  long m = 102023;

  long n, p = 562131;

  这样的写法更加简洁,实际开发中常用。

  总结起来,C语言中 共有三种整数类型,分别是 short、int 和 long。int 称为整型,short 称为短整型,long 称为长整型。

  整数的长度

  C语言并没有严格规定 short、int、long 所占用的字节数,只做了宽泛的限制:

  short 至少占用2个字节。

  int 建议为一个机器字长。32位环境下机器字长为4字节,64位环境下机器字长为8字节。

  short 的长度不能大于 int,long 的长度不能小于 int。

  总结起来,它们的长度(所占字节数)关系为:

  short <= int <= long

  这就意味着,short 并不一定真的”短“,long 也并不一定真的”长“,它们有可能和 int 占用相同的字节数。

  在16位环境下,short 为2个字节,int 为2个字节,long 为4个字节。16位环境多用于单片机和低级嵌入式系统,在PC和服务器上基本都看不到了。

  对于32位的 Windows、Linux 和 OS X,short 为2个字节,int 为4个字节,long 也为4个字节。PC和服务器上的32位系统占有率也在慢慢下降,嵌入式系统使用32位越来越多。

  在64位环境下,不同的操作系统会有不同的结果,如下所示(长度以字节计):

  目前我们使用较多的PC系统为 Win XP、Win 7、Win 8、Win 10、Mac OS X、Linux,short 和 int 的长度都是固定的,分别为2和4,大家可以放心使用,long 的长度在 Win64 和类Unix系统下会有所不同,使用时要注意移植性。

  获取某个数据类型的长度可以使用 sizeof 操作符,如下所示:

  #includeint mainshort a = 10;int b = 100;long c = 1000;char d = 'X';int a_length = sizeof a;int b_length = sizeofint;printf"a=%d, b=%d, c=%d, d=%d", a_length, b_length, sizeofc, sizeofchar;return 0;

  在Win7下的运行结果为:

  a=2, b=4, c=4, d=1

  sizeof 用来获取某个数据类型或变量所占用的字节数,如果后面跟的是变量名称,那么可以省略 ,如果跟的是数据类型,就必须带上 。

  需要注意的是,sizeof 是C语言中的操作符,不是函数,所以可以不带 ,后面会详细讲解。

  不同进制的整数

  C语言中的整数除了可以使用十进制,还可以使用八进制和十六进制。

  1 八进制

  八进制由 0~7 八个数字组成,使用时必须以0开头(注意是数字 0,不是字母 o),例如:

  //合法的八进制数int a = 015; //十进制为 13int b = -0101; //十进制为 -65int c = 0177777; //十进制为 65535//非法的八进制int m = 256; //无前缀 0,相当于十进制int n = 03A2; //A不是有效数字

  2 十六进制

  十六进制由数字 0~9、字母 A~F 或 a~f 组成,使用时必须以0x或0X(不区分大小写)开头,例如:

  //合法的十六进制int a = 0X2A; //十进制为 42int b = -0XA0; //十进制为 -160int c = 0xffff; //十进制为 65535//非法的十六进制int m = 5A; //无前缀 0Xint n = 0X3H; //H不是有效数字

  3 十进制

  十进制由 0~9 十个数字组成,没有任何前缀,和我们平时的书写格式一样,不再赘述。

  注意:C语言中只能使用八进制、十进制和十六进制,不能直接使用二进制,它没有特定的前缀。

  各种整数的输出

  在使用 printf 输出整数时,不同的控制字符会有不同的输出格式。

  1 输出 int 使用%d,输出 short 使用%hd,输出 long 使用%ld。请看下面的例子:

  #includeint mainshort a = 100;int b = 010;long c = 0XFFFF;printf"a=%hd, b=%d, c=%ld", a, b, c;return 0;

  运行结果:

  a=100, b=8, c=65535

  2 输出十进制使用%d,输出八进制使用%o(注意是字母 o,不是数字 0),输出十六进制使用%x或%X。如果希望带上前缀,可以加#,例如 %#d、%#o、%#x、%#X。请看下面的例子:

  #include#includeint mainint a = 100, b = 0270, c = 0X2F;printf"ad=%d, d#d=%#d", a, a;printf"ao=%o, d#o=%#o", b, b;printf"cx=%x, c#x=%#x, cX=%X, c#X=%#X", c, c, c, c;system"pause";return 0;

  运行结果:

  ad=100, d#d=100

  ao=270, d#o=0270

  cx=2f, c#x=0x2f, cX=2F, c#X=0X2F

  需要注意的是,十进制数没有前缀,所以 %d 和 %#d 的输出结果一样。

推荐访问:整数 语言 short C语言中整数short int long c语言中的整数(short int long) c语言中的整数用什么表示 c语言中的整数可用十进制二进制八进制 c语言中的整数类型