Zak*_*kum 7 c integer c89 implicit-conversion unsigned-integer
当整数不在类型的范围内时,最大值+ 1被加/减(取决于该数字范围的哪一部分).例如,
unsigned short num = 65537;
Run Code Online (Sandbox Code Playgroud)
num的值为1(减去65536).我的问题是:为什么会发生?我的直觉告诉我它与进位标志和溢出标志有关,因为最大值总是1111 ....
提前致谢!
对于对有符号整数使用二进制补码的机器,转换为N位无符号类型的规则相当于丢弃除低位N位以外的所有数据.对于典型硬件,这是进行转换的最简单方法.
该标准允许对有符号整数进行其他表示,但为了保持一致性,使用相同的转换规则.这可能需要在这些机器上进行一些额外的工作,但是(a)这种机器非常罕见,并且(b)无论如何费用应该相当小.