数据类型:基本数据类型;构造数据类型;指针类型;空类型。
1、基本数据类型:不能再分解为其他类型,如整型(int);字符型(char);浮点型(float、double);枚举(enum)
①、整型(int):十进制;八进制、十六进制
a、十进制:无前缀,其数码为0~9;
b、八进制:必须以0开头,数码取值为0~7;
c、十六进制:必须以0x或者0x开头,数值取值为0~9,A~F或a~f;
十进制转换成八进制或十六进制采用除8(除16)取余法
十进制常数158(十进制为158)、258000L(十进制为258000);
八进制常数012L(十进制为10)、077L(十进制为63)、0200000L(十进制为65536)
十六进制常数0x15L(十进制为21)、0xA5L(十进制为165)、0x1000L(十进制为65536)
②、字符型(char):以ASCII码的形式存放
char a, b;
a = 120;
b = 121;
printf("%c,%c\n",a,b);
printf("%d,%d\n",a,b);
定义a,b为字符型,当格式符为“c”时,对应输出的变量值为字符,当格式符为“d”时,对应输出的变量值为整数
③、浮点型(float。double):只采用十进制,有2种形式:十进制小数形式,指数形式
a、单精度型(float):精度6,比特数32(4)
b、双精度型(double):精度15,比特数64(8)
④、枚举(enum): 如enum NUM={1,2,3} 新创造
输出结果:
该程序是以四种格式输出整型变量a的值
数据之间的转换规则:
1、若参与运算量的类型不同,则先转换成同一类型,然后进行运算;
2、转换按数据长度增加的方向进行,以保证精度不降低。如int型和long型运算时,先把int量装成long型后再进行运算;
3、所有的浮点运算都是以双精度进行运算的,及时含有float单精度的梁运算,也要先转换成double型,在做运算;
4、char型和short型参与运算时,必须先转换成int型;
5、在赋值运算中,赋值号两边量的数据类型不同时,赋值号右边量的类型将转换成左边量的类型。
类型自动转换的规则:
double
↑
long
↑
unsigne
↑
int
↖
char,short
#include<stdio.h>
int main(int argc, int **argv)
{
float f = 5.75f;
printf("(int)f = %d, f = %f\n",(int)f, f);
return 0;
}
F虽然强制转换成int型,但只在运算中起作用,是临时的,二f本身的类型并不改变。因此,(int)f的值为5而f的值仍为5.75.