如题,本人刚开始学c++,对类型转换有些疑惑。
c++ primer(第五版)上给了有些矛盾的解释(也可能是我理解错误)
“当我们赋给无符号类型一个超出它表示范围的值时,结果是初始值对无符号类型表示数值总数取模后的余数。”
又说,
“把负数转换成无符号数类似于直接给无符号数赋一个负值,结果等于这个负数加上无符号数的模。”
举例
unsigned char a = -7;
按第一种说法,初始值为-7,数值总数为256,取模时256除以-7并向负无限方向取整得-36,256 -(-7)x(-36)得4;
按第二种说法,-7加上256,得249.
但是哪种才是对的呢??
我编译了程序,输出a的结果,得了一个空格。
是书的版本太旧了吗??
恳请各位帮帮忙吧(悲