zoukankan      html  css  js  c++  java
  • c++中的数据类型转换

    一、在c++中的数据类型转换一般有以下几种情况:

    1、将一种算术类型的值赋给另一种算术类型的变量时,c++将对值进行转换

    2、表达式中包含不同的类型时,c++将对值进行转换

    3、将参数传递给函数时,c++将对值进行转换

    二、在进行数据类型转换的时候要注意几点:

    1、将小的数据类型转化为大的数据类型,不会出现问题,一般只是转化后所占用的字节更多了,但是要将大的数据类型转化为小的数据类型的话,就会造成数据的丢失。

    2、将较大的浮点数转化为较小的浮点数,如double转化为float ,这会造成精度(有效数位)降低,值可能超出目标类型的取值范围,在这种情况下,结果将是不确定的。

    3、将浮点类型转换为整型,这会造成小数部分丢失,原来的值可能超出目标类型的取值范围,在这种情况下,结果将是不确定的。

    4、当运算涉及到两种数据类型时,一般是较小的类型将被转换为较大的类型。

    三、强制类型转换:

    1、形式:

    a、(typeName)    value (C语言的写法)

    b、value   (typeName)  (c++的写法)

    c、static_cast<> 可以将值从一种数值类型转换为另外一种数据类型,格式为: static_cast<typeName> (value)  

    例如:

     1 #include <iostream>
     2 int main()
     3 {
     4     using namespace std;
     5     int auks ,bats , coots;
     6     auks=19.99+11.99;
     7     
     8     bats=(int)19.99+(int)11.99;
     9     coots=int(19.99)+int(11.99);
    10     cout<<"auks="<< auks <<",bats = "<< bats;
    11     cout<<",coots = "<<coots<<endl;
    12     
    13     char ch ='Z';
    14     cout<<"The code for " << ch << "is";
    15     cout<<int(ch)<<endl;
    16     cout<<"yes,the code is ";
    17     cout<<static_cast<int>(ch)<<endl;
    18     return 0;
    19 }

    结果如下:

    auks=31,bats = 30,coots = 30
    The code for Zis90
    yes,the code is 90

    四、总结:

    整型数据类型大小排序:  bool , char , signed  char,   unsigned char,  short  ,  unsigned short ,  int , unsigned int ,long , unsigned long , long long , unsigned long long

    浮点数排序大小:float  , double , long double

  • 相关阅读:
    HashMap源码分析和应用实例的介绍
    Map不同具体实现类的比较和应用场景的分析
    Set集合架构和常用实现类的源码分析以及实例应用
    深入理解JVM(7)——类加载器
    深入理解JVM(5)——HotSpot垃圾收集器详解
    PoolManager 简单使用
    HDU4786_Fibonacci Tree
    UVA11653_Buses
    UVA11625_Lines of Containers
    HDU3507_Print Article
  • 原文地址:https://www.cnblogs.com/1121518wo/p/11210591.html
Copyright © 2011-2022 走看看