入门客AI创业平台(我带你入门,你带我飞行)
博文笔记

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

创建时间:2017-02-02 投稿人: 浏览次数:4793

强制类型转换

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

声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。