2013-03-29 44 views
-1

我必須編寫一個計算一些值的C程序。其實應該沒有問題,我的程序適用於小數字,但是當我嘗試打印大數字(如2^32)時,它不起作用。好吧,我知道整數可變是2^32位大,但我不能使用長變量或無符號長變量?大數與printf

爲什麼

unsigned long erg = pow(2,32); 
printf(%u, erg); 

不行?

+2

它甚至不編譯,首先。 –

+0

你可能想嘗試'unsigned long long erg = pow(2,32); printf(「%llu \ n」,erg);'。 – alk

回答

0

你的底層架構本Dependance的。如果你有一個32位的機器,你不能產生大於2^31 - 1的整數。除此之外,即使一個32位機器也不能處理2^32而沒有溢出,範圍從-2^31到2^31 - 1.

+0

啊好的:)謝謝! – user2224328

2

打印一個unsigned long正確格式爲%lu,不%u