1. 数据类型
- 字符型:char,1字节,-128-127
- 无符号字符型:unsigned char,1字节,0-255
- 整形:int,unsigned int,4字节
- 短整形:short,2字节,-32768-32767
- 无符号短整形:unsigned short,2字节,0-65536
- 长整形:long,unsigned long,4字节
- 单精度浮点数:float,4字节
- 双精度浮点数:double,8字节
- 长双精度浮点数:long double,10字节
- 长整形:long long,8字节
2. 类型转换
2.1. 隐式转换
2.1.1. 算数转化
- 整形提升:char, short, int等类型在一起运算时,首先提升到int
- 混合提升:以表达式中最长类型为主,将其他类型位转换成该类型
char short => int => long => long long => float => double
2.1.2. 赋值转化
整形和实形之间相互赋值
- 整形到实形:加0
- 实形到整形:去小数位
2.1.3. 隐式转化规则
char short => int => long => long long => float => double
2.2. 强制转换
当隐式类型转化不能满足时,就需要强制类型转化
格式:(类型)待转表达式
#include <stdio.h>
int main(void) {
int a = 3; int b = 10;
float c = b/a;
printf("%f\n", c); // 3.000000
float c = (float)b/a;
printf("%f\n", c); // 3.3
return 0;
}
2.3. 浮点数跟0值比较
int main()
{
// 面试题:请写一段小程序,比较浮点数和零的值的大小
double tmp = 0.0;
if (tmp > 0 - 0.000001 && tmp < 0 + 0.000001) // 可能会有精度问题,0.3 => 0.2999999 0.7 => 0.699999,所以才这么判断的
{
printf("tmp == 0\n");
}
else
{
printf("tmp != 0\n");
}
}