这今天有朋友面试遇到一个题是这样的
int main() { unsigned int a = 6; int b = -20; a + b > 6? puts(">6"):puts("<=6"); return 0; }
问你说出结果
如果你不了解隐式类型转换,你很大可能说 <= 6
结果是 .>6
哎,我就深入理解类型转换吧
所谓类型转换就是一种数据类型转换成为另一种数据类型
在一个算术表达式中,如果出现两个不同数据类型,就会先进性类型转换,在计算表达式的值
比如
cout << 34 + 21.45 + 'a' << endl;
34 是int,21.45是double,'a'是char类型。
运算的过程如下 34会先转换成double类型 34.00,再完成34.00+21.45的
运算,得到当前结果 55.45 ,然后将 'a' 转换成double类型,97.00
再计算 55.45 + 97.00 得到最终结果 152.45
而类型转换分为隐式类型转换和显示类型转换。
c++中类型转换发生在,算术表达式计算,函数参数传递,函数返回值及赋值语句中
我们先谈谈隐式类型转换吧
下面四种情况会发生隐式类型转换
定义:
c++会自动对参与运算的数据类型进行转换,不需要人参与叫隐式类型转换