内容正文:
第2章基本数据类型
第2章基本数据类型
01存储单元的特点
02整型
03整型字面量
04整型的输入输出
05scanf函数的用法+
06整型的使用
07浮点型
08字符型
09字符型的输入输出
10再谈printf函数
11典型例题
我们在第2章中讨论C语言的基本数据类型:整型、浮点型和字符型。计算机中的数据只是01串,只有确定了类型才能确定数据的实际值。
计算机中二进制形式的数据有一些新的特点,如整数有取值范围的限制,小数多为近似值,这些由计算机的特点确定,与编程语言无关。
2
整型字面量
字面量就是程序中出现的固定值。如a = 5中的5就是字面量。这节课我们学习整型字面量。
3
字面量
字面量是固定值的表示方法。语句a = sum + 23;中,23就是一个整型字面量。
字面量也需存储,字面量的类型就是存储字面量的存储单元的类型。VC6.0中,整型字面量是int型。
已知long a,sum = 5;,分析语句a = sum + 2300000000;。
int型字面量23亿超出了int型的取值范围,因此,这条语句有逻辑错误。
没必要分析逻辑错误的语句的执行结果。
字面量是固定值的表示方法。语句a = sum + 23;中,23就是一个整型字面量。
字面量也需存储,字面量的类型就是存储字面量的存储单元的类型。VC6.0中,整型字面量是int型。
已知long a,sum=5;,分析语句a=sum+2300000000;。
int型字面量23亿超出了int型的取值范围,因此,这条语句有逻辑错误。
没必要分析逻辑错误的语句的执行结果。
只要用存储单元存储,就有取值范围的限制。
4
分析字面量2300000000和2300000000u
整数23亿的类型是int型,int型的值不会是23亿,这个字面量有逻辑错误。
字面量2300000000u中的u称为后缀,后缀u表示需用unsigned int型存储单元存放该整型字面量。
unsigned int型的取值范围0到42亿,因此,字面量2300000000u的实际值就是23亿,没有问题。
也可写作2300000000U。用作后缀时,u和U没有区别。
整数23亿的类型是int型,int型的值不会是23亿,这个字面量有逻辑错误。
字面量2300000000u中的u称为后缀,后缀u表示需用unsigned int型存储单元存放该整型字面量。
unsigned int型的取值范围0到42亿,因此,字面量2300000000u的实际值就是23亿,没有问题。
也可写作2300000000U。用作后缀时,u和U没有区别。
5
例2-1 C语言中,-1u大于0吗?
-1是负数,后缀u表示字面量-1是无符号数,而无符号数不会是负的,-1u这种写法似乎有问题。
计算机中没有负号,只有编码后的01串。-1u表示用unsigned int存储单元存储-1的编码。
-1的编码非常特殊是32个1。int型时,32个1的值是-1;unsigned int型时,32个1的值是最大的整数,232-1。因此,常用-1u表示最大的整数。
注意:只可用-1u表示最大的整数,-2u就有逻辑错误。
例2-1 C语言中,-1u大于0吗?
-1是负数,后缀u表示字面量-1是无符号数,而无符号数不会是负的,-1u这种写法似乎有问题。
计算机中没有负号,只有编码后的01串。-1u表示用unsigned int存储单元存储-1的编码。
-1的编码非常特殊是32个1。int型时,32个1的值是-1;unsigned int型时,32个1的值是最大的整数,232-1。因此,常用-1u表示最大的整数。
注意:只可用-1u表示最大的整数,-2u就有逻辑错误。
6
整型字面量的前缀
整型字面量默认是十进制,可以用前缀改变进制。
前缀为0的整数是八进制数。 027=2×8+7×1=23
前缀为0x或0X的整数是十六进制数。0x17=1×16+7×1=23
语句int i = 027, j = 0x17, k = 0X17;定义了三个整型变量i、j、k,且它们的值都被初始化成了23。
整型字面量默认是十进制,可以用前缀改变进制。
前缀为0的整数是八进制数。 027=2×8+7×1=23
前缀为0x或0X的整数是十六进制数。0x17=1×16+7×1=23
语句int i = 027, j = 0x17, k = 0X17;定义了三个整型变量i、j、k,且它们的值都被初始化成了23。
7
思考题:分析下面语句有无逻辑错误。
short m = 65535; long n = 65535;
变量m不能取值65535,语句有逻辑错误。变量n的值为65535。
unsigned short i = -1u; long j = -1;
变量