关于整型提升,无符号类型与有符号类型之间的隐式转换

关于整型与浮点型之间的转换,这里就不说了

int x=0;

float y=0.0

x+y,肯定是直接转换成为浮点型了

 

在这里整理一下关于整型之间的类型转换

首先,要明晰什么是整型 

整型从基本类型来分有,整型,char型,bool型

从符号来分,又可以分为无符号类型和有符号类型

首先是:

都是有符号类型:

那就往最大的那个类型转换

如:short x;

  int y;

  long long z;

 x+y+z;

转换过程是:x先转换为int ,与y相加,得到的结果再转换为longlong 类型

都是无符号类型:

还是往最大的那个类型转换

如 unsigned int x;

unsigned short y;

x+y;

肯定是y转换为unsigned int 类型

 

一个是有符号类型,一个是无符号类型

这个时候就看那个类型的空间更大

如果无符号类型空间>=有符号类型,那么有符号类型就向无符号类型转换

如果无符号类型<有符号类型,那么无符号类型就向有符号类型转换


如 unsigned int x;

int y;

x+y;

那么,y先转换为unsigned int,这个时候,如果是负数,那么mod%2^32


unsigned short x;

int y;

x就会转换为 int类型

posted @ 2017-02-28 21:57  LT.C#  阅读(2296)  评论(1编辑  收藏  举报