C语言中原来一个负数,我输出时用%x想输出为16进制,但%x为输出无符号整数,怎么办???怎么知道

C语言中原来一个负数,我输出时用%x想输出为16进制,但%x为输出无符号整数,怎么办???怎么知道为负数呢?

看输出的无符号整数最高位是否为1,如果是1则是负数追问

不是输出了一个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);

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-04-09
前面加个负号好了,一%X。
第2个回答  2014-04-09
%x 并不是只是输出正数的
相似回答