C语言程序中所用到的每一个常量,变量和函数等程序的基本操作对象都有一种数据类型与之相联系。
C语言提供了四种数据类型:基本类型,构造类型和空类型。
(1)基本类型还可以分解为其他类型,主要为整型,字符型和浮点型。
(2)构造类型是根据已定义的一个或多个数据类型,用构造的方式来定义的。可以理解为,一个构造类型的值由若干个“成员”或“分量”构成。每个“成员”都是一个基本类型或一个个构造类型。
C语言中构造类型包括:数组类型,结构体类型,共用体类型和枚举类型。
(3)指针是C语言中一种特殊的,同时又具有重要作用的数据类型。
一,直接常量
1,整型常量
整型常量即整数,包括正整数,负整数和零。C语言中,整型常量可以用十进制,八进制和十六进制表示。
十进制表示:由数字0~9,正,负号组成,如369,-663等;
八进制表示:以0(数字0)为前缀,其后由数字0~7组成,如0163,036等;八进制数一般是无符号数。如0192,-011都是不合法的八进制常量。
十六进制表示:以0x或0X为前缀,其后由数字0~9和字母A~F(字母大小写的均可)组成,如0x12cd,0X6Fa等。十六进制数一般是无符号数。
2,实型常量
(1)小数形式:由整数部分,小数点和小数部分组成,当整数部分或者小数部分为0时,可以省略不写,但是小数点不可省略。如12.345,3.,-.123等均为正确的实数。
(2)指数形式:由尾数部分,字母E或e和指数部分组成,格式为:=尾数E指数。
3,字符型常量
字符常量单个字符,用一对单引号及其括号起的字符来表示。如'a','b','=','$','?'都是合法的字符常量。在C语言中,字符常量有以下特点:
(1)字符常量只能用单引号括起来,不能永双引号或其他括号。
(2)字符常量只能是单个字符,不能是字符串。
(3)字符可以是ASCII字符集中的任意字符。
转义字符使用示例。
#include <stdio.h>
int main()
{ char b,c,d,e;
b='\43';
c='\103';
d='\x2a';
e='\x41';
printf("b=%c,c=%c,d=%c,e=%c\n",b,c, d,e);
printf("\good\40moring!\b\"!\n");
printf("\123456");
return 0;
}
二,数据类型转换
1,自动类型转换:不同类型的数据在一起运算时,编译系统会自动进行类型转换。
2,强制类型转换:强制类型转换是采用强制类型转换运算符将某种数据类型强制转换成指定的数据类型,其一般形式为(类型说明符)(表达式)。
功能:把表达式的运算结果强制转换成类型说明符指定的类型。
强制类型转换示例。
#include <stdio.h>
int main()
{ int a=3,b=4;
float c;
c=(float)(a+b)\2;
printf("c=%f\n",c);
return 0;
}
运行结果:c=3.500000
分析:计算表达式(float)(a+b)时,是将a+b的结果7强制转换为float型的7.0,然后计算7.0/2的结果为3.5。输出c的值时,由于c的数据类型是单精度型的,有7位有效数字,故添加了5个0。
进行强制类型转换时需注意:
(1)需强制类型转换中的表达式一定要括起来,否则只对紧随括号后的量进行类型转换。
(2)强制类型转换是一种不安全的转换,如果是从高级类型转换成低级类型,则会损失数据的精度。
(3)强制类型转换并不改变表达式中变量的类型和值。
本章对C语言的数据类型,运算符和表达式进行的全面的介绍和理解。