c++中一个简单的问题

来源:百度知道 编辑:UC知道 时间:2024/06/20 01:49:19
C++中,把负值赋给unsigned对象是完全合法的,其结果是该负数对该类型的取值个数求模后的值。所以,如果把-1赋给8位的unsigned char,那么结果是255,因为255是-1对256求模后的值。
这个求模是怎么算的啊,-1应该是1000 0001吧,对256求模怎么是255呢?
十分感谢~

这是指数学上的“求模”运算。

例如,8关于5的模是3,这是因为:
(8-3)可被5整除。用C语言描述就是,(8-3)%5==0

同理,对于负数,-2关于6的模是4,因为:
(-2-4)%6==0

看出来了吗?A对B求模就是通过用A减去某个数,使得这个差能够被B整除。我们就说这个数是A对B求模后的值。

因此,(-1-255)=-256,可以被256整除,我们就说255是-1对256求模之后的值。