GESP等级考试C++二级-类型转换

C++中的基本数据类型主要包括整型、浮点型、字符型和布尔型,这些数据类型之间是可以相互转换的。在《GESP等级考试C++二级-ASCII码与字符》中提到,可以通过显式和隐式两种方式实现ASCII码与字符之间的转换。C++中数据类型之间的转换也可以通过显式和隐式两种方式实现。

1 显式实现数据类型的转换

C和C++中显式实现数据类型转换的方法不同,而C++又是向下兼容C的,因此在C++中可以使用C语言的显式转换方式,也可以使用C++的显式转换方式。

1.1 C语言的显式转换方式

C语言的显式转换方式的格式是“(类型名)(表达式)”,如果表达式中只有一个变量,那么可以不用括号,代码如图1所示。

图1 C语言的显式转换方式的代码

其中,第7行代码将int类型的a1显式转换为double类型;第11行代码将float类型的表达式显式转换为int类型。图1所示的代码运行效果如图2所示。

图2 代码运行效果

1.2 C++的显式转换方式

C++的显式转换方式的格式是“类型名(表达式)”,代码如图3所示。

图3 C++的显式转换方式的代码

其中,第7行代码和第11行代码使用了显式方式对数据类型进行转换。

2 隐式实现数据类型的转换

在赋值或者表达式计算的时候,可以实现隐式数据类型的转换。

2.1 赋值时隐式数据类型的转换

在对变量所赋值的类型与变量本身类型不匹配时,编译器会隐式地对所赋值进行类型转换,使得其与变量类型匹配,代码如图4所示。

图4 赋值时隐式数据类型的转换的代码

其中,第6行代码中,double类型的d1所赋的值是int类型,此时编译器隐式地将int类型转换为double类型;第8行代码中int类型的a2所赋的值是float类型,此时编译器隐式地将float类型转换为int类型,程序运行的效果如图2所示。

2.2 计算表达式时隐式数据类型的转换

一个表达式中可能有多种数据类型,在计算表达式值时,编译器会使用如图5所示的方式进行隐式数据类型转换。

图5 计算表达式时的数据类型转换方式

其中,如果表达式中包含char和short类型的数据,在计算时会将其转换为int类型;如果表达式中包含float类型的数据,在计算式会将其转换为double类型,如图5红框所示;图5中绿框中表示类型转换的高低次序,即如果在表达式中包含了int、unsinged、long和double这四种类型中的两种或者两种以上的数据,会将低次序的数据类型转换为高次序的数据类型,即如果表达式中包含了int、unsinged、long,此时编译器会将int和unsigned数据类型转换为long类型。

图6 计算表达式时隐式数据类型的转换

其中,第6-9行分别定义了short、char、unsinged和double类型的变量,在计算“s1+c1+u1+d1”时,编译器首先将s1和c1转换为int,之后再将int类型和u1转换为double,最后表达式的值是double类型。

3 真题解析

2024-06判断题

答案:×

解析:如果表达式中包含char和short类型的数据,在计算时会将其转换为int类型。因此,在计算该表达式时,’9’会隐式地转换成int类型57,’0’会隐式地转换成int类型49,因此输出应为106。

2024-06判断题

答案:×

解析:使用C++的显式转换,取12.56的整数部分,值为12。

2024-03 判断题

解析:第4行代码中将s显式第转换为int,值为18,因此t的值应该是18+10=28。

2024-03 判断题

答案:错

解析:bool()函数用于将其它数据类型转换为布尔型,将0转换为false,非0值转换为true。因为-1是非0,因此返回true值。

2023-12判断题

答案:×

解析:int(‘9’)将char类型转换为int类型,int(‘9’)的值是字符’9’对应的ASCII码值57,因此该表达式的值是228。

2023-12判断题

答案:×

解析:C++编译器可以将不同数据类型隐式地转换成相同数据类型,因此运算符可以处理不同数据类型。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值