short int a=32769; cout<<a<<endl; system("pause"); return 0;
引用 4 楼 winassembly 的回复:正如楼上所说,short int的范围是[-32768,32767],当超出范围时,会产生环绕现象。另外,你可以把32769转换成二进制是1000000000000001,而在计算机中任何数都是以补码形式存储的,当最高位是1时,计算机把它理解为负数,所以1000000000000001是一个负数的补码,将其转换成原码(除最高符……
正如楼上所说,short int的范围是[-32768,32767],当超出范围时,会产生环绕现象。另外,你可以把32769转换成二进制是1000000000000001,而在计算机中任何数都是以补码形式存储的,当最高位是1时,计算机把它理解为负数,所以1000000000000001是一个负数的补码,将其转换成原码(除最高符号位外,其他各位取反再加1)得11111111……
楼上正解,超过了short类型的表示范围了。
70,004
社区成员
243,256
社区内容
加载中
试试用AI创作助手写篇文章吧