2014-10-31 72 views
0

我偶然發現了以下問題,有人可以請幫忙嗎? 我正在嘗試使用按位操作,並且我期待這打印2^50的值。然而,輸出爲0.我可以打印的最大值是2^31,這應該是正常int的最大值,對吧?那麼,我在這裏做了一些非常錯誤的事情嗎?提前致謝。按位運算無符號long long在c中

#include<stdio.h> 
#include<inttypes.h> 
int main(void) 
{ 
uint64_t x=(1<<50); 
printf("%"PRIu64,x); 
return 0; 
} 
+2

這1不是'uint64_t'呢。 – harold 2014-10-31 22:31:13

回答

4

你必須讓你不斷爲unsigned long long類型,保證面積至少爲64位:

uint64_t x=(1LLU<<50);