#include
#include
int main()
{
int a = -1;
unsigned int b = 1;
if(a > b)
printf("a > b, a = %d, b = %u\n", a, b);
else
printf("a <= b, a = %d, b = %u\n", a, b);
exit(0);
}
//运行结果
a > b, a = -1, b = 1
我想问的是网上资料说的都是有符号数int 向无符号数unsigned int转化
,因为在32位机上,int是32位,范围–2,147,483,648 to 2,147,483,647
,unsigned int是32位,范围0 to 4,294,967,295,所以int向范围更大的隐式
转换,可是我不能理解的是为什么不可以unsigned int隐式转化为int呢,超过unsigned int正数最大值的用负数表示不是一样的道理吗?比如unsigned int
的值2,147,483,648超过int的最大值,那么转化为int时就变为对应的负数,这样不可以吗?求解各位大佬