我有一个 unsigned long long 变量,它在我的系统上是 8 个字节,我正在尝试执行以下操作:

unsigned long long ull;
ull = timeLow;
ull |= timeHigh << 32;

执行此操作时,我收到警告:左移计数 >= 类型宽度。它似乎也没有考虑到 timeHigh 转移。我该如何解决这个问题?

最佳答案

您不是在移动 ull ,而是在 shifiting timeHigh ,然后将该移动的结果存储在 ull 中。

我怀疑 timeHigh 不够大,无法存储 32 位移位的结果。使 timeHigh 成为 unsigned long long ,( 编辑 )或者只是将 timeHigh 分配给 ull ,然后在 or 中的 timeLow 之前移动它。 (信用@JasonD)

关于c++ - 左移错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13937598/

10-12 01:27