计算机萌新的成长历程——初识C语言3

今天我将继续分享数据类型的相关内容,本篇的主要内容将围绕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)

...

接下来我们来运行一组代码,将不同的数据类型以整型的形式打印出来,代码如下

代码语言:javascript
复制
#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;
}

打印结果如下图所示

计算机萌新的成长历程——初识C语言3_整型

这里我们要清楚的是这些数字代表的是字节,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的区别”,有兴趣的朋友可以查看一下原文。

后面我会继续分享自己在学习C语言过程的的相关内容,感谢各位的翻阅。