在C语言中将一个很大的正整数赋值给一个int类型变量a,输出a时有时会显示负值,为何?
在C语言中将一个很大的正整数赋值给一个int类型变量a,输出a时有时会显示负值,为何?
日期:2016-05-31 19:13:52 人气:1
在不同的C系统中,int有不同的表示范围。
32位(4字节)的int,它可以表示的数字范围是-2147483648~+ 2147483647,共可表示4294967296个不同的数。
这是因为它有点像我们用(每个档位上只可以表示0~9)的算盘。假如我们的一个算盘有4个档位,它能表示从0~9999共10000个不同的数字。当我们要把比9999更大的数字存放到算盘上时,走出的部分就“丢失”了。如果要存的数字是12345,按“老规矩”存放完毕后,读取算盘上的数字时,由于数据发生了丢失,只能读到2345。这是