C语言|基本数据类型总结

image.png

1.位、字节和字

位、字节和字是描述计算机数据数据单元或存储单元的术语

  • 位(bit):最小的储存单元,可以存储0或1,是计算机内存的基本改造块
  • 字节(byte):常用的计算机的存储单位。一般来说,1字节均为8位(1 byte = 8 bit)。又因为1位可以表示0或1,那么8位字节就有256种可能的0、1组合,那通过二进制编码,便可以表示0~255的整数或一组字符。
  • 字(word):设计计算机时给定的自然储存单位,也是计算机一次处理数据的最大单位。字由若干个字节组成,而字的位数叫做字长,即cpu一次处理二进制代码的位数。字的长度与计算架构有关,比如32位机,一个字就是32位,换算成字节就是4字节;同样的64位机,一个字就是64位,也就是8字节。
    下面的数据都是以字节为单位

2.整型类型

image.png

2.1 数据类型长度和取值范围

类型win32win64linux32linux64取值范围
short2222-27 ~ 27-1
unsigned short22220 ~ 216 -1
int4444-215 ~ 215-1
unsigned int44440 ~ 232 -1
long4448-231 ~ 231-1
unsigned long44440 ~ 232 -1
long long8888-231 ~ 231-1
unsigned long long88880 ~ 264 -1

这其中要特别注意long类型,win系统的数据长度都为4字节,而Linux64中数据长度为8字节,二者不统一,所以编写跨平台的软件时尽量不要使用long类型,或者需要对long类型做特殊处理。


2.2.1 关键字signed和unsigned

  • signed 是一般是被默认省略(不用特意表示出来),表示数据是有符号的,即表示可以储存负整数和正整数。

  • unsigned:需要特意表示出来 ,表示数据是没有符号的,即不能表示正负,所以一般认为其表示的是正整数

区别:signed需要用一个字节来储存符号,进而同类型下的signed能存储的数值的绝对值的大小小于unsigned。


2.2.2 short、int、long和long long

short:有符号短整型,是signed short int的省略写法,一般至少占用2个字节,存储大小不能大于int类型,可以节省一定内存,一般多用于单片机和嵌入式系统。其无符号是unsigned short

int:有符号整型,必须为整数,即正整数、负整数和零。在ISO C规定其取值范围最小为-32768~32767,而一般来说,系统会用一个特殊位的值表示有符号整数的正负号。其无符号为unsigned int。

long:有符号长整型,是signed long int的省略写法,取值范围大于int类型。如果要将较小的常量作为long类型来对待,可以在值的末尾加上l(小写的L)或者L后缀,一般用L。其无符号为unsigned long。

long long:有符号长长整型,是signed long long int的省略写法,和long类似,需要在值后加llLL ,其无符号为unsigned long long


3.字符类型

image.png

类型WinLinux取值范围
char11-128~127
unsigned char110~255

char类型用于存储字符,但从技术层面看,char是整数类型,因为char类型实际存储的是整数而不是字符。计算机使用数字编码来处理字符,即用特定的字符(一般为ASCII编码),其无符号为unsigned char。


4.布尔类型

__Bool:C99标准新增,用于表示布尔值,即逻辑值true和false。在C中,1代表true,值0 表示false,所以和char类型一样也可以认为是一种整数类型,一般占用1位的存储空间。


5.浮点类型

image.png

5.1 浮点数简述

浮点数:其小数点的位置是可以是漂浮不定,即在一个值后面加上一个小数点,该值就成为了一个浮点数(如7是整数,而7.00是浮点数),书写浮点数有很多形式,这里简要介绍e记数法

Drawing 2023-06-24 14.09.46.excalidraw.png
在十进制下,上图中3.141592用e记数法为0.311592E11为指数,E(表示10)为底数。(注:浮点型常数不能在中间加空格)
计算机把浮点数分成小数部分和指数部分来表示,而且分开储存这两部分,所以7.00和7在数值上相同,但在计算机中二者的储存方式不同。

5.2 float、double和long double

类型所占大小指数位数(bits)取值范围精度
flot48-2128~+21286~7
double811-21024~+2102415~16
long double1618~19

5.3 浮点值的上溢和下溢

上溢:在计算中,数值超过当前类型的最大范围时,会发生上溢,即给变量赋一个无穷大的特定值,printf()显示inf

#include<stdio.h>  
#include <math.h>  
  
int main()  
{  
float a = pow(2,127);  
float b = pow(2,129);  
printf("%e", a);  
printf("%e", b);  
return 0;  
}

输出结果

1.701412e+38
inf

下溢:在计算过程中,损失了原来末尾的有效数字的情况。如将一个五位有效数字的数0.31415E-10除以10,所得到的结果是0.03141E-10


6.复数和虚数

C99新增,一般了解即可
image.png


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Aweken dream

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值