C语言中原来一个负数,我输出时用%x想输出为16进制,但%x为输出无符号整数,怎么办???怎么知道为负数呢?
不是输出了一个16进制的数吗?
追答比如输出的数据是7FFFFFFF,最高字节是7F,即二进制0111 1111这样最高位是0,这是个正数
如果输出的是80FF00FF,最高字节是80,即二进制1000 0000最高位是1,这个是负数
假设int是32位数据类型:
int x;
scanf("%x",&x);
printf("%x\n",x);
if ( x&0x80000000 ) printf("%x是个负数。\n",x); else printf("%x是正数。\n",x);