您的位置:首页 > 其它

自动类型转换

2016-06-03 09:38 239 查看
对于自动类型转换,最常见的就是 混合运算 以及
赋值运算
,还有一种就是函数值的类型转换

赋值运算:自动把“=”右边的表达式的类型转换成“=”右边的变量的类型,例如 int a=4.5; a的值实际是4!
 

混合运算:就是一个运算表达式当中包含了多个类型,这时候就需要有类型转换。当运算符两边的操作数类型不同时,其中一个操作数就要经过类型转换以和另一个操作数的类型相一致,然后才能进行运算。
变换操作数采取就高不就低的原则,即级别低的操作数先被转换成和级别高的操作数具有同一类型,然后再进行运算,结果的数据类型和级别高的操作数相同。

       高        double    ←←    float

       ↑          ↑             

       ↑         long     

       ↑          ↑

       ↑        unsigned

       ↑          ↑

       低         int      ←←    char,short

             自动转换顺序表

int i = 0;
i = 4.5 * 5;
cout << i << endl; //22

unsigned int i = 10;
int j = -1;
if (i > j)
{
cout << "yes" << endl;
}
else
{
cout << "no" << endl;
}

输出no


函数返回值的类型转换: int f1(){ return 36.8;}
ubuntu 64位机器测试结果

#include <iostream>
using namespace std;
int main()
{
        cout << sizeof(double) << endl;
        cout << sizeof(long) << endl;
        cout << sizeof(float) << endl;
        cout << sizeof(unsigned) << endl;
        cout << sizeof(int) << endl;
        cout << sizeof(char) << endl;
        cout << sizeof(short) << endl;
        cout << sizeof(char*) << endl;
        int i;
        i = 3.14 + 'a';

}

8
8
4
4
4
1
2
8


windows 32位操作系统

#include <iostream>
using namespace std;

int main()
{
cout << sizeof(double) << endl;		//8
cout << sizeof(long) << endl;		//4
cout << sizeof(float) << endl;		//4
cout << sizeof(unsigned) << endl;	//4
cout << sizeof(int) << endl;		//4
cout << sizeof(char) << endl;		//1
cout << sizeof(short) << endl;		//2
cout << sizeof(char*) << endl;		//4
int i;
i = 3.14 + 'a';

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: