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

31 篇文章 10 订阅

强制类型转换

原C语言的形式:

(类型名)(表达式)

比如:

(double)a  //把a转换为double类型
(int)(a+b)  //把a+b的值转换为整型

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

(int)(a+b)  //把a+b的值转换为整型
(int)a+b //把a的值转换为整型,然后加b

C++新增加的形式:

类型名(表达式)

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

int(x)
int(x+y)

举个栗子:

#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)将浮点型数据赋值给整型变量时,舍弃其小数部分。

	float x;
	int i;
	x = 3.6;
	i = x;
	cout<<"x = "<<x<<",i = "<<i<<endl;

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

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

	float x;
	int i;
	i= 3;
	x = i;
	cout<<"x = "<<x<<",i = "<<i<<endl;

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

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

	float x;
	double i;
	i= 3.123456789e100;
	x = i;
	cout<<"x = "<<x<<",i = "<<i<<endl;

此时出现溢出。

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

	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)将有符号型数据赋值给长度相同的无符号型变量,连同原来的符号位一起传送。

  • 20
    点赞
  • 62
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值