C语言| 基本数据总结

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 数据类型长度和取值范围

类型

win32

win64

linux32

linux64

取值范围

short

2

2

2

2

-27 ~ 27-1

unsigned short

2

2

2

2

0 ~ 216 -1

int

4

4

4

4

-215 ~ 215-1

unsigned int

4

4

4

4

0 ~ 232 -1

long

4

4

4

8

-231 ~ 231-1

unsigned long

4

4

4

4

0 ~ 232 -1

long long

8

8

8

8

-231 ~ 231-1

unsigned long long

8

8

8

8

0 ~ 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

类型

Win

Linux

取值范围

char

1

1

-128~127

unsigned char

1

1

0~255

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

4.布尔类型

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

5.浮点类型

### 5.1 浮点数简述

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

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

5.2 float、double和long double

类型

所占大小

指数位数(bits)

取值范围

精度

flot

4

8

-2128~+2128

6~7

double

8

11

-21024~+21024

15~16

long double

16



18~19

### 5.3 浮点值的上溢和下溢

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

```c #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; } 输出结果c 1.701412e+38 inf

```

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

6.复数和虚数

C99新增,一般了解即可

举报
评论 0