数据类型由窄到宽
char -> short -> int -> long -> float -> long long -> double
同数据类型比大小时,无符号比有符号宽
转换规则:
1 隐式转换 从窄变宽
2 整形起
long long c=1+'a'-12 (86)(1+97-12)
有符号整形->无符号整形->long long 整形
int main ()
{
unsigned short a=10;
unsigned int b=10;
if(a>-1) //a:无符号整形,从short转变成unsigned int a=10,10>-1,即a>-1
printf("a>-1");
else
printf("a<-1");
if (b>-1) // b:无符号整形,-1转变成二进制位1111 1111,-1的int型转变为
unsigned int型为127,即10<127
printf("b>-1");
else
printf("b<-1");
}
类型转换:1 窄变宽,补符号位,无符号数左边补0;
2 强制将宽类型转变成窄类型,保留低数据
/*
低数据
int a=0x12345678 //保留78,78为低数据
char b=(char)a;
printf("%d %d",a,b);
*/
int main()
{
char a=255; //a=-1;
char b=-1; //b=-1;
int c=a; //c=-1;
int d=b; //d=-1;
char e=100; //e=100;
int f=e; //f=100;
unsignde char g=255;
int h=g; //h=255
printf("%d",a);
printf("%d",b);
......
return 0;
}