我試圖對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