关于#c++#的问题,请各位专家解答!

img


求这道)详解,不明白为什么到最后是负号,求评论区详解。
超出去不应该往前走吗?

你这么理解,short 是几个字节?2个对吧,也就是16 bits
32768 转换成二进制是多少?1000 0000 0000 0000
懂了吧?只有符号位为1,那肯定是负的,其他按照补码来算,就是-32767

因为short是有符号的,最高位是1的话,表示负数 。输入 32768,正好使得short型的最高位是1,其它位是0,所以是负数。
由于负数采用补码,所以后面位都是0的话,实际表示的值是32768,因此最终负数值就是 -32768