有这样一道C语言题:unsigned int b=65535;printf("%d",b);结果为什么是-1?
有这样一道C语言题:unsigned int b=65535;printf("%d",b);结果为什么是-1?
日期:2016-01-16 20:31:34 人气:2
主要问题是出在输出控制上,因为你定义的是无符号整数因此16位都用来表示数值,没有符号位,但是你输出处用%d是不对的,%d是用来输出有符号整型数的。因此会将b的值以有符号的形式输出。而65536这个值在16位有符号整数表示中正好是-1.
现在基本都是用32位表示整型数了,因此这样写,不会在32位编译系统中发错误。