当试图在C中存储高于32,767的短整数值时,为了看看会发生什么,我注意到打印到屏幕上的结果是我想要存储的数字, - 65,536.例如,如果我尝试将65,536存储在一个短变量中,则打印到屏幕上的数字为0.如果我尝试存储32,768,我会将-32,768打印到屏幕上.如果我尝试存储65,546并将其打印到屏幕上,我会得到10.我认为你得到了图片.为什么我看到这些结果?
使用Twos Complement存储整数值.在二进制补码,可能的值的范围是-2^n对2^n-1,其中n是用于存储位的数目.由于存储方式的完成,当你走到上面时2^n-1,你最终会回到原点2^n.
短裤使用16位(15位用于数字存储,最后一位是符号).
编辑:请记住,不保证会发生此行为.编程语言可能完全不同.从技术上讲,高于或低于最大/最小值是未定义的行为,应该这样对待.(感谢Eric Postpischil让我保持警惕)