C语言无符号整形和无符号短整型显示负数结果为什么不一样?

日期:2017-09-24 00:21:12 人气:1

C语言无符号整形和无符号短整型显示负数结果为什么不一样?

因为printf里用%d来输出某个变量时,程序会默认该变量为int型。如果该变量是整型,但不是int,而是char或者short,程序会先把它转换成int型,再传给printf. 所以用unsigned int a=-12时,没有上面所说的转换步骤,%d当成有符号整数,输出是-12,没问题。 unsigned short a=-12时, 注意这时候a是16位,在内存中是11111111 11110100,转换成int型会变成32位,程序在它的左边会添加16个0,变成00000000 00000000
    A+
热门评论