相关疑难解决方法(0)

使用unsigned long类型进行位移会产生错误的结果

我有点困惑,因为我想unsigned long在我的系统上初始化一个大小为8字节的类型的变量(在我认为的每个现代系统上).当我想分配1 << 63给变量时,我得到一个编译器警告但是数字实际上是0.当我这样做时,1 << 30我得到了预期的结果2 ^ 30 = 1073741824.然而,当我这样做时1 << 31,我得到了2 ^ 64(我认为;实际上这不可能)打印的结果18446744071562067968.

任何人都可以向我解释这种行为吗?

c unsigned bit-shift

6
推荐指数
1
解决办法
5421
查看次数

标签 统计

bit-shift ×1

c ×1

unsigned ×1