#include
int main ( )
{
unsigned int a=-1;
printf("%d\n",a); //打印结果和类型转换有关系。
printf("%u\n",a);
printf("%u\n",-1);
return 0;
}
结果:
-1
4294967295
4294967295
#include <stdio.h>
int main ( )
{
int a=-1;
printf("%d\n",a); //打印结果和类型转换有关系。
printf("%u\n",a);
printf("%u\n",-1);
return 0;
}
结果:
-1
4294967295
4294967295
#include
int main ( )
{
unsigned short a=-1;
printf("%d\n",a); //打印结果和类型转换有关系。
printf("%u\n",a);
printf("%u\n",-1);
return 0;
}
结果:
65535 ????
65535 ????
4294967295
#include
int main ( )
{
short a=-1;
printf("%d\n",a); //打印结果和类型转换有关系。
printf("%u\n",a);
printf("%u\n",-1);
return 0;
}
结果:
-1
4294967295
4294967295
#include
int main ( )
{
double a=-1;
printf("%d\n",a);
printf("%u\n",a);
printf("%d\n",(int)a);
printf("%u\n",(int)a);
printf("%u\n",-1);
return 0;
}
结果:
0 ?????
0 ?????
-1
4294967295
4294967295
请高手分析一下打问号的地方究竟发生了什么类型转换?
实际上没有什么类型转换
unsigned int a=-1;
-1也就是0xffffffff作为常量给了a
你反汇编下就看到了,运行时没有额外的操作。