在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'」 –