相关疑难解决方法(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
查看次数

"通常的算术转换"和"整数促销"是一回事吗?

"通常的算术转换"和"整数促销"是一回事吗?我已阅读的"通常的算术转换"用于使表达的相同类型的操作数,而"整数优惠"用于促进小于类型intint,但在MSDN这两个概念"在通常放置算术转换"仅限.

c c++ integer-promotion

2
推荐指数
1
解决办法
772
查看次数

标签 统计

c ×2

bit-shift ×1

c++ ×1

integer-promotion ×1

unsigned ×1