今天我将继续分享数据类型的相关内容,本篇的主要内容将围绕short/int/long/long long——整型数据类型的区别。
在介绍他们的区别前,首先我们要先了解计算机中的单位,计算机的单位有以下几种单位:
bit——比特位,计算机中最小的单位,1个比特位只能存放一个“1”或一个“0”
byte——字节,1字节=8比特位(1byte=8bits)
kb——千字节,1千字节=1024字节(1kb=1024byte)
mb——兆字节,1兆字节=1024千字节(1mb=1024kb)
gb——千兆字节,1千兆字节=1024兆字节(1gb=1024mb)
tb——万兆字节,1万兆字节=1024千兆字节(1tb=1024gb)
pb——十万兆字节,1十万兆字节=1024万兆字节(1pb=1024tb)
...
接下来我们来运行一组代码,将不同的数据类型以整型的形式打印出来,代码如下
#include <stdio.h>
int main()
{
printf("%d\n", sizeof(char));//sizeof——…的大小,sizeof(char)——char在计算机中所占大小
printf("%d\n", sizeof(short));//sizeof——…的大小,sizeof(short)——short在计算机中所占大小
printf("%d\n", sizeof(int));//sizeof——…的大小,sizeof(int)——int在计算机中所占大小
printf("%d\n", sizeof(long));//sizeof——…的大小,sizeof(long)——long在计算机中所占大小
printf("%d\n", sizeof(long long));//sizeof——…的大小,sizeof(long long)——long long在计算机中所占大小
printf("%d\n", sizeof(float));//sizeof——…的大小,sizeof(float)——float在计算机中所占大小
printf("%d\n", sizeof(double));//sizeof——…的大小,sizeof(double)——double在计算机中所占大小
return 0;
}
打印结果如下图所示
这里我们要清楚的是这些数字代表的是字节,1就是1字节,2就是2字节。根据这些信息我们可以得到的结论是在同类的数据类型中,他们之间的区别是字节的不同
short——short int——短整型,它的大小是2个字节大小;
int——整型,它的大小是4个字节大小;
long——long int——长整型,它的大小是4个字节大小;
long long——long long int——更长的整型,它的大小是8个字节大小;
float——单精度浮点型,它的大小是4个字节大小;
double——双精度浮点型,它的字节大小是8个字节大小。
这里细心的朋友就会发现int和long的大小都是4个字节,为什么一个叫整型,一个叫长整型呢?
这里同样我也存在疑惑,也查询了相关的信息,得到了以下的几点结论:
1.在早期16位操作系统中int=short int,它的大小只有2个字节大小,long int的大小是4个字节大小;
2.在后来的32位操作系统中,int也变成了4个字节大小,也就是int=long int,为了区分比int更长的字节,于是有了long long,它有8个字节大小;
3.现在的64位操作系统中,既可以编辑32位程序,也可以编辑64位程序。在32位程序中,int和long int的字节大小都是4个字节大小;在64位程序中,long int和long long都是8个字节大小。
也就是说long int在不同的程序中,它的大小也不相同。在g++中严格遵循了这个规定,但是在VC++中long int 在64位程序中的大小还是4个字节。
这些信息内容出自CSDN中的博主“疯癫小程序”的文章“int和long的区别”。