一、C语言数据类型的分类
二、基本数据类型
1. 逻辑类型:
只有两个量true和falsa,表示逻辑真值和逻辑假值。
bool类型:
使用时需要引入头文件:<stdbool.h> 实际上为_Bool,直接引用_Bool则不需要头文件。
例如:
bool a = -1;
if(a){
x = 12;
}else{
x = 18
}
因为a = -1为非零数值,逻辑为真,所以给x赋值为12,而不是18。
2.char类型
使用char数据类型的变量需要特别注意,防止数据超出值域,思考下列几个语句:
char c1 = 128; //出错,数据越界,实际输出-128(反码补码);
char c1 = 129; //出错,数据越界,实际输出-127;
unsigned char c1 = -1; //出错,数据越界,实际输出255.
头文件<limits.h>可以查询数据类型值域。
3.short类型
4.int型
5.long型
6.浮点类型:
三、强制数据类型的转换:
强制数据类型的转换是指采用某种方式将某种数据类型强制转换成指定的数据类型。
包括显式的数据类型转换和隐式的数据类型转换。
例如:
int a = 32, b = 0;
float c = 23.44, d = 2.66;
b = (int)(a + b +c); //输出b=58
会造成精度的丢失。
强制类型转换符后面的表达式如果存在复杂运算,就一定要用小括号括起来。
强制类型转换符是一种不安全的转换,一般都是将高级类型转换成低级类型,要丢失数据的精度;强制类型转换不会改变表达式中变量的数据和其原本的值。
自动类型转换:在程序运行的时候,低精度的数据会自动向高精度的数据进行这类型转换,数据的进度不会丢失
自动类型转换:
一般为 低精度 向 高精度 转换
(可按字节大小顺序记,有低精度到高精度的数据类型)
char - short - int - long - float -double .....
强制类型转换:
常应用于:指针,因为指针的类型不管如何转换,它的精度都是不会丢失的。
当用于 高精度 向 低精度 强制转换时, 数据会丢失!
如:float a = 3.14; (int) a -> a = 3 , 数据丢失!
判断输出类型的方法:
若为 同精度 运算,则输出仍为同精度(强制转换除外)。如: int/int -> int
若为 不同精度 计算,则输出为更高的进度(强制转换除外)。如: int/float -> float