ashtar 发表于 2020-4-20 21:52:05

关于数据取值的话

刚刚发现个问题。按照常理,我们知道这是由于数据溢出导致的结果。按照二进制就可以算出来。

200(10) == 128(10) + 64(10) + 8(10) == 1000 0000(2) + 100 0000(2) + 1000(2) == 1100 1000(2)

1100 1000(2) + 1100 1000(2) == 1 1001 0000(2)

char 类型占一个字节(8 位),因此舍弃掉最前边的进位,结果为 1001 0000(2) == 144

以上,是小甲鱼的解释。但是!!我刚刚在计算的过程中发现一个奇妙的事情。
由于定义的是无符号的char,这就意味着可以储存最大128*2 == 256,而我们计算出的结果为200 + 200 == 400,那么数据溢出,有400 - 256 == 144 正好是我们要求解释的结果。不知道为啥,这算是错误吗?
后面,我又把数字换了下得到的结果和我猜想的一样,我又以为是真的。这很打脑阔。。
页: [1]
查看完整版本: 关于数据取值的话