C语言基础知识DAY2——数据类型

目录

数据类型

基本数据类型

整数类型

浮点类型

字符类型

空类型


数据类型

程序的本质就是对数据进行处理,但程序并不能处理任意类型的数据,只支持有限的一些数据类型。

C语言支持的数据类型:

  • 基本(简单)数据类型:整数类型、浮点类型、字符类型。

  • 复杂数据类型:数组、指针、结构体、共用体、枚举。

基本数据类型

基本数据类型分为下面四种:

  • 整数类型

  • 浮点类型

  • 字符类型

  • 空类型

整数类型

  • short:短整型,通常占2个字节(Byte)的内存空间,表数范围为[-32768,+32767]。(16位中,最高位表示符号,1表示负,0表示正,其他15位表示数值位)

  • unsigned short:无符号短整型,只能表示非负整数,占2个字节(Byte)的内存空间,表数范围为[0,65535]

  • int:整形,通常占4个字节。表示范围为[-2^31,2^31-1]

  • unsigned int:无符号整型,只能表示非负整数,通常占4个字节,表数范围为[0,2^32-1]

  • long:长整型,通常占8个字节。表示范围[-2^63,2^63-1]

  • unsigned long:无符号长整型,只能表示非负整数,通常占8个字节,表数范围为[0,2^64-1]

  • long long:超长整型。通常占8个字节。表示范围[-2^63,2^63-1]

  • unsigned long long:无符号超长整型,只能表示非负整数,通常占8个字节,表数范围为[0,2^64-1]

学习方法:熟练记住基本数据类型的关键字拼写,占用储存空间大小、存储形态、表数范围。

C语言标准并没有明确规定数据类型所占内存空间大小,只规定了相对大小

如:short ≤ int ≤ long ≤ long long,具体以编译器为主。

操作系统按字节为单位将整个内存空间划分为一个个的内存单元,每个内存单元占1Byte,并且从零开始按顺序依次给所有内存单元编号,这个编号就是内存单元的地址。

所有整数在内存中以补码形式存储。CPU也是以补码形式对整数进行运算处理的

正整数的原码、反码、补码完全一样。

负整数的反码为原码符号位不变,其他位按位取反计算得到,补码为反码符号位不变,加1得到。

补码转换成原码的方法有两种:

第一种方法是:将补码减一得到反码,再将反码按位取反即可得到原码(符号位始终保持不变)

第二种方法是:补码的补码就是原码。

例子:

数据1000-1000
原码0000 0011 1110 10001000 0011 1110 1000
反码0000 0011 1110 10001111 1100 0001 0111
补码0000 0011 1110 10001111 1100 0001 1000

有符号的整数的最高位表示符号位,1表负,0表正。其他位表示数值位。

对于无符号类型,没有符号位所有位都为数值位

-1000+1

1111 1100 0001 1000

0000 0000 0000 0001

1111 1100 0001 1001

常用进制:

  • 二进制(BIN)

  • 八进制(OCT)

  • 十进制(DEC)

  • 十六进制(HEX)

sizeof关键字的功能:计算某个数据类型、变量、常量等所需要占用的内存空间大小。

常用占位符:

  • %hd:十进制short类型数据

  • %hu:十进制unsigned short类型数据

  • %d:十进制int类型数据

  • %u:十进制unsigned int类型数据

  • %ld:十进制long类型数据

  • %lu:十进制unsigned long类型数据

  • %lld:十进制long long类型数据

  • %llu:十进制unsigned long long类型数据

  • %x:十六进制int类型数据

  • %o:八进制int类型数据

  • %l:十进制long类型数据

  • %f:十进制float类型数据

  • %lf:十进制double类型数据

  • %e:科学技术形式的float类型数据

  • %le:科学技术形式的double类型数据

浮点类型

浮点类型(不存在原码反码补码这个概率)分为两种:

  • float:单精度浮点型,通常占4Byte储存空间,表数范围为(-3.4 * 10^38 , -3,4 * 10^-38)和(3.4 * 10^-38 , 3,4 * 10^38)

  • double:双精度浮点型,通常占8Byte储存空间,表数范围为(-1.7 * 10^308 , -1.7* 10^-308)和(1.7 * 10^-308 , 1.7 * 10^308)

浮点数不存在原码反码补码概念,并不是以补码形式存储。

浮点数的储存形态(IEEE754)国际标准规定的格式储存和处理。

字符类型

用于表示文字符号数据,比如英文字母、标点符号等。

char:字符型,占1个字节(Byte),最高位为符号位, 0 表正, 1 表负,(字符型用单引号),表数范围为[-128 , 127]

字符:character

unsigned char:无符号字符型,占1Byte,没有符号位,8位全部都是数值位,表数范围为[0,255]

char 和 unsigned char可以表示字符,也可以用来表示整数,因为他们的本质就是整数。

编码(Encode):按照某个规则将非二进制数据(比如文字符号、图像、声音、视频等)转化为二进制数据,以供计算机系统存储和处理。

解码(Decode):编码的反过程,解码方案必须和编码方案对应,就是将二进制 数据还原为原始的非二进制数据,比如播放一个mp3文件。

ASCII 编码表

英文字符编码值
a97D
b98D
A65D
B66D
048D
149D
空格32D
\n (换行符)10D
\r(回车符)13D
\0(空字符,没有任何显示效果,C语言将其用作字符串结束符)0D

记住常用字符的ASCLL码值

字符分为:

普通字符:如 ’a’ , '3' 等

转义字符:如 ' \n ' ,' \r ' , ' x61'(16进制61) 

char c1

c1 = 'a'   //  c1 = 97 等效

输入字符可以用 scanf 也可以用getchar

空类型

void,非常特殊的一个数据类型,不能用于定义变量或常量,表示不确定的数据类型,通常用于类型占位。

关键字(Key Words):具有特别意义的标识符。

要牢记数据类型关键字的拼写!!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值