C/C++类型转换总结

本文总结了C/C++中的类型转换,包括隐式转换和显式转换。隐式转换在混合类型运算、条件表达式和初始化/赋值时自动进行,而显式转换如static_cast、dynamic_cast、const_cast和reinterpret_cast则需要程序员手动指定。文章通过实例解释了各种转换规则和注意事项。
摘要由CSDN通过智能技术生成

                                                                                    

C/C++类型转换总结

       

最近做笔试题经常会碰到有关类型转换的题型,所以结合例子做下总结,也是希望自己能更时刻的理解类型转换。

C++的类型转换包括内置类型和类类型对象的转换。

(1) 1.1隐式类型转换(implicit type conversion) :转换规则由编译器自动执行,无需程序员的介入,有时甚至不需要程序员了解。

例子:

int ival = 0;

ival = 3.14 + 3; //会有编译警告出现

其中3.14是double型字面值常量,而3是int型字面值常量,C++在执行算术运算前,会将两操作数转换为同一数据类型,而不是不同类型直接操作。C++定义的算术类型的内置转换原则是尽可能的防止精度损失。转换原则采取两数据元素精度值最高的为标准进行转换,在本例中算术计算得到的和为double型,赋值时再将double转换成int。

笔试题(某科技公司笔试题)

unsigned  int a=2003;

int count=0;

int b=-2;

while((b+a)>0)

{

a=a+b;

count++;

}

  count = ? (while条件判断中,因为ab的类型不一致,在进行运算操作时会统一内置转换为无符号,条件的值永远大于零,而造成死循环)

1.2 何时发生隐式类型转换

1.2.1在混合类型的表达式中,其操作数被转换为相同的类型

int ival;

double dval;

ival >= dval // ival被转换成double

1.2.2用作条件的表达式被转换成bool类型:

int ival;

if (ival) //ival转换成bool

while (cin) //cin转换成bool

 1.2.3用一表达式初始化某个变量,或将一表达式赋值给某个变量,则该表达式被转换为该变量类型。

int ival = 3.14;//3.14转换成int

int *ip;

ip = 0;   //int 0被转换为int *的空指针

1.3 隐式转换的类型

1.3.1指针转换

在使用数组时,大多数情况下数组都会自动转换为指向第一个元素的指针。

int ia[10];

int *ip = ia; //ia被转换成指针

1.3.2  转换为bool类型

1.3.3算术类型与bool类型的转换

1.3.4转换与枚举类型

1.3.5转换为const对象

1.3.6由标准库类型定义的转换

string s;

while (cin>>s) //即读入cin,将istream类型转换为bool类型,检测流状态,读入成功则流的状态将导致上述类型转换为bool后获得true,否则为false.

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值