码迷,mamicode.com
首页 > 编程语言 > 详细

C++类型转换

时间:2015-04-18 21:55:07      阅读:128      评论:0      收藏:0      [点我收藏+]

标签:

C++中有丰富的类型,在对不同类型进行运算时,就需要进行类型转化。

总的转换规则:将小范围类型转换为大范围类型,例如:float->double,short->int,int->long,等等。C++这样转换是为了不损失精度,而对于对数据精度要求较高的应用来说精度损失无疑是灾难。需要指出:将0赋给bool变量时,将被转换为false;而非零值将被转换为true。

表达式中的转换:

当同一个表达式中包含两种不同的算术类型时,C++将执行两种自动转化。1、一些类型在出现时便会自动转换;2、有些类型在于其他类型同时出现在表达式中时将会转换。

自动转换:C++在计算表达式时,会将bool,char,unsigned char,signed char,short值转换为int。这种转换成为整形提升(integral promotion)。例:当有两个short型变量相加时,C++会将short型转为int型,在进行加运算,然后再转为赋值号左操作数的类型。至于2遵循转换规则即可,不再赘述。

强制类型转化 

强制类型转换格式有两种:1、(typeName) value;2、typeName(value)

第一种格式源于C语言。第二种格式是C++特有,像不像函数调用!

另外C++还引入了4中强制类型转换预算符,以后再讨论。下面给出代码:

 

//类型转换

#include<iostream>

int main()
{
    using namespace std;

    int intthree = 3;                    //将小范围值付给大范围值,精度不损失。反之有可能损失精度,从而带来麻烦。
    long lthree = intthree; 
    cout<<lthree<<endl;            //output:3
    long lnum = 3456765;
    short snum = lnum;
    cout<<snum<<endl;            //output: -16643
    cout<<lnum<<endl;             //output: 3456765
    signed int intfu = -5;
    unsigned int intzheng = 10000;
    cout<<intfu<<endl;             //output: -5

    int inth = 64;
                                         //强制类型转换并不改变变量本身在值,而是创建一个新的,指定类型在值,这个值通常在表达式中使用。
    cout<<static_cast<unsigned char>(inth)<<endl;              //output: @


}

C++类型转换

标签:

原文地址:http://www.cnblogs.com/smallnice/p/4438037.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!