在c程序中。我正在尝试在uint64_t变量上使用左移运算符。无符号long long型按位移
E.g.
// with shift of 24 bits
uint64_t x = 0;
x = (((uint64_t)76) << (24));
Output is: x = 1275068416
---------------------------------------------
// with shift of 32 bits
uint64_t x = 0;
x = (((uint64_t)76) << (32));
Output is: x = 0
如果我执行左移,直到24位,然后它工作得很好,但在32位则输出0而我认为是作为uint64_t中即无符号长长是64位的大小。所以,它应该不会工作,直到64位的转变?
你用什么构造来检查'x'的值? – ach
我只是使用printf printf(“....%d \ n”,x)打印出x的值; – TechJ
QED,那么..'%d'正在为'int'工作。使用“'%llu'” –