C语言中,unsigned不应该是无符号数吗?为什么还是可以显示负数?

如题所述

显示成有符号还是无符号,是根据printf的格式化参数来决定的。
%d是按照有符号输出,%u是按照无符号输出。追问

既然这样,那unsigned这个语句还有什么作用,直接int 也可以用%u输出啊

追答

用unsigned定义变量,在C语言运算时有用。譬如位移运算,无符号数右移时,高位补充0,如果是有符号数右移,高位补充的是符号位的值(负数的符号位是1,正数的符号位是0)。
另外,如果用%u输出有符号数,编译时可能会提示告警。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-06-03
printf("%d", a); //还是按有符号数显示的,应该改成:
printf("%u", a);
相似回答