在下述三种情况下,C/C++会进行隐式类型转换(implicit type cast):①变量初始化或者赋值时,值与变量的类型不同;②表达式中不同类型的变量/值进行运算时;③函数参数传递▲时。
本文引用自作者编写的下述图书; 本文允许以个人学习、教学等目的引用、讲授或转载,但需要注明原作者"海洋饼干叔
叔";本文不允许以纸质及电子出版为目的进行抄摘或改编。
1.《Python编程基础及应用》,陈波,刘慧君,高等教育出版社。免费授课视频 Python编程基础及应用
2.《Python编程基础及应用实验教程》, 陈波,熊心志,张全和,刘慧君,赵恒军,高等教育出版社Python编程基础及应用实验教程
3. 《简明C及C++语言教程》,陈波,待出版书稿。免费授课视频
3.5.1 赋值/变量初始化
我们通过对下述C++程序及其执行结果的分析来解释赋值/变量初始化时的隐式类型转换及其影响:
//Project - AssignType
#include <iostream>
using namespace std;
int main(){
bool a = 3.0; //转换为bool类型:0为false,非0为true
float b = -99999.2301; //double转float,精度降低,可能超出储值范围
int c = b; //float转int, 小数部分丢失,可能超出储值范围
unsigned int d = c; //int转unsigned int,负值被错误解释
short e = d; //unsigned int转short,可能超出储值范围
double f = b; //float转double,安全
cout.setf(ios_base::fixed, ios_base::floatfield);
cout << "a = " << a << "\nb = " << b << "\nc = " << c
<< "\nd = " << d << "\ne = " << e << "\nf = " << f;
return