我试图对64位变量进行大于32的移位操作。 有人可以告诉我的代码搞砸了吗?对于64位变量,按位移> = 32操作C
处理器architechture是AMD64和开发环境Visual Studio的社区2015年和DEVC++
我的代码如下所示:
#include <stdio.h>
#include <stdint.h>
int main(int argc, char *argv[])
{
uint64_t x = ~0;
printf("x is %8x \n", x);
x = ~((uint64_t)(1) << 31);
printf("x is %8x \n", x);
x = ~((uint64_t)(1) << 32);
printf("x is %8x \n", x);
return 1;
}
输出是:
x is ffffffff
x is 7fffffff
x is ffffffff
我一直在思考在这整个上午现在.. 我真的是一个初学者与C上比嵌入式8位体系结构:)
-Codester
%×32bit的打印变量 – Hcorg
使用调试器,而不是printf的 – BeyelerStudios
也许'%lx'为64位。或者把'printf'转换成'double'。 – i486