我必須編寫一個計算一些值的C程序。其實應該沒有問題,我的程序適用於小數字,但是當我嘗試打印大數字(如2^32)時,它不起作用。好吧,我知道整數可變是2^32位大,但我不能使用長變量或無符號長變量?大數與printf
爲什麼
unsigned long erg = pow(2,32);
printf(%u, erg);
不行?
我必須編寫一個計算一些值的C程序。其實應該沒有問題,我的程序適用於小數字,但是當我嘗試打印大數字(如2^32)時,它不起作用。好吧,我知道整數可變是2^32位大,但我不能使用長變量或無符號長變量?大數與printf
爲什麼
unsigned long erg = pow(2,32);
printf(%u, erg);
不行?
你的底層架構本Dependance的。如果你有一個32位的機器,你不能產生大於2^31 - 1的整數。除此之外,即使一個32位機器也不能處理2^32而沒有溢出,範圍從-2^31到2^31 - 1.
啊好的:)謝謝! – user2224328
打印一個unsigned long正確格式爲%lu
,不%u
它甚至不編譯,首先。 –
你可能想嘗試'unsigned long long erg = pow(2,32); printf(「%llu \ n」,erg);'。 – alk