一、在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

 

posted on 2019-07-18 22:54  txp玩linux  阅读(6582)  评论(0编辑  收藏  举报