前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C++ 强制类型转换和赋值中的类型转换

C++ 强制类型转换和赋值中的类型转换

作者头像
chaibubble
发布2022-05-07 09:13:03
1.5K0
发布2022-05-07 09:13:03
举报
文章被收录于专栏:深度学习与计算机视觉

强制类型转换

原C语言的形式:

(类型名)(表达式)

比如:

代码语言:javascript
复制
(double)a  //把a转换为double类型
(int)(a+b)  //把a+b的值转换为整型

需要注意的是:如果强制类型转换的对象是一个变量,那么该变量不需要用括号括起来;但是如果对象是一个包含多项的表达式,则表达式应该用括号括起来。

代码语言:javascript
复制
(int)(a+b)  //把a+b的值转换为整型
(int)a+b //把a的值转换为整型,然后加b

C++新增加的形式:

类型名(表达式)

该形式的类型名不需要括括号,但是待转换的对象不管是变量还是表达式都需要用括号括起来,比如:

代码语言:javascript
复制
int(x)
int(x+y)

举个栗子:

代码语言:javascript
复制
#include <iostream>
using namespace std;
int main()
{
	float x;
	int i;
	x = 3.6;
	i = (int)x;
	cout<<"x = "<<x<<",i = "<<i<<endl;
	getchar();
	return 0;
}

运行结果: x = 3.6,i = 3

赋值过程中的类型转换 如果赋值运算符两侧的类型不一致,但都是数值型或字符型,在赋值时可以自动进行类型转换。

字符型与数值型的说明: 在C++基本的数据类型中,可以分为四类:整型,浮点型,字符型,布尔型。其中数值型包括 整型与浮点型;字符型即为char。

(1)将浮点型数据赋值给整型变量时,舍弃其小数部分。

代码语言:javascript
复制
	float x;
	int i;
	x = 3.6;
	i = x;
	cout<<"x = "<<x<<",i = "<<i<<endl;

运行结果: x = 3.6,i = 3

(2)将整型数据赋值给浮点型变量时,数值不变,但是以指数形式存储。

代码语言:javascript
复制
	float x;
	int i;
	i= 3;
	x = i;
	cout<<"x = "<<x<<",i = "<<i<<endl;

运行结果: x = 3,i = 3

(3)将double型数据赋值给float型变量时,注意数值范围溢出。

代码语言:javascript
复制
	float x;
	double i;
	i= 3.123456789e100;
	x = i;
	cout<<"x = "<<x<<",i = "<<i<<endl;

此时出现溢出。

(4)字符型数据可以赋值给整型变量,此时存入的是字符的ASCII码。

代码语言:javascript
复制
	char x;
	int i;
	x = 'C';
	i = x;
	cout<<"x = "<<x<<",i = "<<i<<endl;

运行结果: x = C,i = 67

(5)将一个int,short或long型数据赋值给一个char型变量,只将低8位原封不动的送到char型变量中。 (6)将有符号型数据赋值给长度相同的无符号型变量,连同原来的符号位一起传送。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017-02-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档