第五篇:你“ 看不见 ” 的隐式转换

本文探讨了C++中常见的几种隐式转换现象,包括数组转换为指针、逻辑判断中变量向布尔类型转换、流对象向布尔类型转换以及枚举变量在计算中的隐式整型转换,并对这些转换进行了详细解释。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

       对于隐式转换,想必你已经了解了算数转换中的“ 向上对齐 ”的概念;了解了赋值隐式转换的规律( 右值类型转换为左值类型 )。但C++中的隐式转换远不止这些,本文就将告诉你一些容易被忽略,但事实上发生了的隐式转换。

数组转换为指针

       在许多情况下,数组都隐式转换为了指针。取数组元素的过程就是根据首元素和元素序号以及元素大小到指定位置取值;数组作为函数参数传递给函数的过程中也转换成了指向首元素的指针。当然,在一些其他的场合,隐式转换未必发生,比如sizeof( 数组 )就不会隐式转换为sizeof( 指针 )。

逻辑判断中其他变量向布尔类型隐式转换

       if ( p ), while ( p ),在很多情况下我们都看到这样的语句( p通常是指针 )。这里其实发生了隐式转换,当p不为NULL或者不为0,则p转换成了1作为逻辑判断条件;当p为NULL或者0,则p转换成了0作为逻辑判断条件。

逻辑判断中流对象向布尔类型的转换

       while ( cin >> s );这是我们在获取用户输入时常使用的语句,根据cin流获取变量后的状态,它将转换为布尔类型的0或者1。

枚举变量或者成员用于计算时隐式转换为整型

       枚举变量或者成员常作为整型出现在算式中,这种情况下,枚举变量或类型都是先向上转换为整型再带入式子计算。

说明

       1. 有很多A到B发生了隐式转换的过程会被误解为A就是B,这是不对的。

       2. 除了本文所列举的,隐式转换的情形还有很多。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值