不同数据类型的数字可能有重叠
字符类型是一种数据类型
字符类型名称是char
字符类型由256个不同的字符构成
每个字符对应一个整数数字(不同字符对应的数字不同)
每个字符数据有两个不同的身份 分别是字符和数字
ASCII码表列出字符和数字之间的关系
所有的字符数据分成两组 每组128个
其中一组两个身份间的对应关系在所有计算机上都一样 这足字符的数字身份是0到127
另外一组两个身份之间的对应关系在不同计算机上不一样
这组字符的数字身份可能是-1到-128,也可能是128到255
无符号字符类型也是一种数据类型
无符号字符类型的名称是 unsigned char
这个类型同样由256个字符构成,这些字符数字身份是固定的从0到255
ASCII码表中所有小写字母连续排列,大写字母也一样
\n
换行
\r
回车
\t
制表符
\\
代表\
\'
代表'
\"
代表"
短整数类型是一种数据类型 用short表示 这个类型包括65536个不同的整数
从-32768到32767
无符号短整数用 unsigned short表示 数字范围0到65535
长整数类型用long int 表示
一共包含2的32次方个不同的整数 范围从-2的31次方到2的31次方减一
无符号长整数类型用unsigned long或者 unsigned long int 表示
范围从0到2的32次方减一
在我们使用的计算机环境下整数类型和长整数类型完全一样
以上所有整数类型的数字范围是逐渐扩大的
浮点类型用来表示小数点的数字
浮点类型分成单精度浮点数和双精度浮点数
单精度用float 表示
双精度用double 表示
程序中整数数字后面加u表示这个数字是无符号整型 例如6U
在浮点数后面加f表示这个数字是float类型
在程序中没有特别说明类型的浮点数默认为double
数据类型和占位符之间对应关系
char
%c / %hhd
short
%hd
unsigned short
%hu
long
%ld
unsigned long
%lu
int
%d
unsigned int
%u
float
%f / %g
%f会保留小数点后面的无效0
double
%lf / %lg
%nd 要求占n个位置
%-nd 要求占n个位置从左边位置开始打印
%0nd
用字符’0‘填充位置
%n.mf
表示整数占n个位置小数点占m个位置
不同类型之间的差异由他们在内存中所占的空间大小决定
内存中所有存储位置大小是完全一样的 我们把他们称为字节
一个变量所对应的存储位置由多个连续的字节构成
每个字节都有自己的地址 不同的字节地址不同
所有地址从0开始递增
变量的地址就是它所对应的字节中最前面那个字节的地址
sizeof关键字可以用来计算一个变量或者数据类型占多少个字节
char (unsigned char )
1个字节
short(unsigned short)
2个字节
long(unsigned long)
4个字节
int(unsigned int)
4个字节
float
4个字节
double
8个字节
sizeof关键字可以计算一个公式结果的大小
sizeof对变量的修改无效
使用一组0或1表示数字的方法叫做二进制
计算机内部采用二进制表示
二进制和十进制只是表示数字的不同方式。任何数字既可以用二进制表示也可以用十进制表示
二进制数字中每个位置有一个编号,最右边位置编号是0 向左递增
二进制数字中某个为上为1 所对应的十进制描述方式是2的编号次方
二进制相邻的两个1所代表的数字之间有倍数关系
二进制转换十进制的方法:
对二进制每个位单独转换后相加
十进制转换二进制方法:
对十进制数字除2取余倒着写就可以得到对应的二进制
91 除以2得45余1
45 除以2得22余1
22 除以2得11余0
11 除以2得5余1
5 除以2得2余1
2 除以2得1余0
1 除以2得0余1
结果是0101 1011
采用刚才的方法转换得到的二进制叫做原码
计算机采用二进制补码记录数字
所有非负数的原码补码一致
每个字节可以采用八个二进制数位表示
八进制和十六进制是二进制的两中简化
把一个数字的二进制表示方式从右向左没三个数位分成一组 得到八进制
可以直接在程序中使用八进制的方式表示数字 这时需要在数字的前边加0
八进制对应的占位符是%o
把二进制表现形式从右向左每四个数位分成一组 妹夫0到9 a到f之间表示就得到十六进制
可以使用十六禁止表示数字 前面加0x
%x和%X都可以表示十六进制的占位符 %x的适合所有字符都是小写的
练习:
1、编程把用户给定的一个0到255之间的数字转换成二进制并打印在屏幕上
(采用两中方法)
2、编程把用户给定的描述转换成如下格式并打印 hh:mm:ss