再举一个例子,如下:
#include <stdio.h> void main() { long x, y; int a, b, c, d; x = 5; y = 6; a = 7; b = 8; c = x + a; d = y + b; printf("c=x+a=%d, d=y+b=%d", c, d); }
打印:
c=x+a=12, d=y+b=14
从程序中可以看到:
x、y是长整型变量,a、b是基本整型变量,它们之间允许进行运算,运算结果为长整型。但c,d被定义为基本整型,此最后结果为基本整型。
本例说明,不同类型的量可以参与运算并相互赋值,其中的类型转换是由编译系统自动完成的。
4.实型数据
Ⅰ.实型常量的表示方法
实型也称为浮点型,实型常量也称为实数或者浮点数。
在C语言中,实数只采用十进制。
它有二种形式:十进制小数形式和指数形式:
十进制小数形式
由数码0-9和小数点组成,必须有小数点。
例如0.0、25.0、5.789、0.13、5.0、300.、-267.8230等均为合法的实数。
标准C允许浮点数使用后缀,后缀为 f或F 即表示该数为浮点数,如 356f 和 356. 是等价的。
指数形式
由十进制数、阶码标志“e”或“E”和阶码(只能为整数,可以带符号)组成。
其一般形式为:
aEn(a为十进制数,n为十进制整数)
例如:
2.1E5 (等于2.1105)
3.7E-2 (等于3.710-2)
0.5E7 (等于0.5107)
-2.8E-2 (等于-2.810-2)
以下不是合法的实数:
345 (无小数点)
E7 (阶码标志E之前无数字)
-5 (无阶码标志)
53.-E3 (负号位置不对)
2.7E (无阶码)
Ⅱ.实型变量
实型数据在内存中的存放形式
实型数据一般占4个字节(32位)内存空间,按指数形式存储。
浮点数的二进制存储方式如下:
举例3.14159在内存中的存放形式如下:
- 小数部分占的位(bit)数愈多,数的有效数字愈多,精度愈高;
- 指数部分占的位数愈多,则能表示的数值范围愈大。
实型变量的分类
- 单精度(float型)
- 双精度(double型)
- 长双精度(long double型)
在Turbo C中单精度型占4个字节(32位)内存空间,其数值范围为3.4E-38-3.4E+38,只能提供七位有效数字;双精度型占8个字节(64位)内存空间,其数值范围为1.7E-308~1.7E+308,可提供16位有效数字。
实型数据的舍入误差
测试如下:
#include <stdio.h> int main() { float a, b; a = 123456.789e5; b = a + 20; printf("%f\n", a); printf("%f\n", b); return 0; }
打印:
12345678848.000000 12345678848.000000
显然,a的值已经不准确,整数部分后3位产生误差,同时b在a的基础上加20(两位数,在后边的3位误差之内)也会产生误差。
计算以下表达式的值:
(1)1.0 / 3 * 3等于多少?
(2)3 / 2呢?
(3)1 / 3 * 3呢?
通过程序计算:
#include <stdio.h> int main() { printf("%f\n", 1.0 / 3 * 3); printf("%f\n", 3 / 2); printf("%f\n", 1 / 3 * 3); return 0; }
打印:
1.000000 0.000000 0.000000
5.字符型数据
字符型数据包括字符常量和字符变量。
字符常量
字符常量是用单引号括起来的一个字符。
例如:‘a’、‘b’、’=’、’+’、’?'等都是合法字符常量。
在C语言中,字符常量有以下特点:
- 字符常量只能用单引号括起来,不能用双引号或其它括号。
- 字符常量只能是单个字符,不能是字符串。
- 字符可以是字符集中任意字符,但数字被定义为字符型之后就不能参与数值运算。
如’5’和5是不同的,'5’是字符常量,不能参与运算。
char a, b;
转义字符
转义字符是一种特殊的字符常量,以反斜线"\"开头,后跟一个或几个字符。
转义字符具有特定的含义,不同于字符原有的意义,故称转义字符。
例如,在之前的练习中printf()函数的格式串中用到的 \n 就是一个转义字符,其意义是回车换行。
转义字符主要用来表示那些用一般字符不便于表示的控制代码。
所有的转义字符及其含义如下:
转义字符的使用:
#include <stdio.h> int main() { int a, b, c; a = 5, b = 6, c = 7; printf(" ab c\tde\rf\n"); printf("hijk\tL\bM\n"); return 0; }
打印:
fab c de hijk M