C/C++数据类型的转换
上节我们介绍了运算符的种类以及优先级。C/C++使用多个运算符的优先级
本节我们介绍数据类型转换。
- 为什么需要"类型转换":
参与运算的两个操作数的类型必须相同! - 类别:
- 隐式类型转换
算术转换
赋值转换
输出转换 - 强制类型转换
- 隐式类型转换
隐式类型转换
-
算术转换
(+ - * / %)
char,int,long,long long,float,double
例如:1.0 / 2 => 1.0 / 2.0 = 0.5
12 + 0.5 => 12.0 + 0.5 = 12.5
规则: 小范围的数自动转换成大范围的数。
注意: 1 / 2.0 = 0; -
赋值转换
#include <iostream> int main(){ int x; x = 3.1415926; std::cout << x << std::endl; return 0 }
输出结果:
3
-
输出转换(一般在C语言中)
#include <stdio.h> int main(){ int x; x = 300; printf("%c",x); return 0 }
输出结果:
,
分析:%c是以字符形式输出,即把x(四字节)强转成char(一个字节)
300 => 1 0010 1100一个字节只有八位,舍去最高位的1 得到0010 1100
0010 1100 => (十进制)44 对应ASCII码值为','
;
强制类型转换
-
简单强制类型转换
#include <iostream> int main(){ float x; x = 3.1415926; std::cout << x << std::endl; std::cout << (int)x << std::endl; return 0 }
输出结果:
3.1415926 3
注意:在强制转换时在需要转换的变量前面使用(类型)
-
高级强制类型转换
- static_cast
- dynamic_cast
- const_cast
- reinterpert_cast
本节类型转换讲到这儿,下节我们介绍if语句。