有这样一道C语言题:unsigned int b=65535;printf("%d",b);结果为什么是-1?

日期:2016-01-16 20:31:34 人气:2

有这样一道C语言题:unsigned int b=65535;printf("%d",b);结果为什么是-1?

主要问题是出在输出控制上,因为你定义的是无符号整数因此16位都用来表示数值,没有符号位,但是你输出处用%d是不对的,%d是用来输出有符号整型数的。因此会将b的值以有符号的形式输出。而65536这个值在16位有符号整数表示中正好是-1. 现在基本都是用32位表示整型数了,因此这样写,不会在32位编译系统中发错误。
    A+
热门评论