2015-06-20 119 views

回答

0

一個特定FPGA實現可能有選擇地支持實現定義擴展整型(N1570 6.2.5類型):

4)還可以有實現定義擴展符號整數 類型38)標準和擴展符號整型 統稱符號整型。 )

6)對應於擴展帶符號整數類型的無符號整數類型是擴展無符號整數類型。標準 和擴展的無符號整數類型統稱無符號整數 類型0.40)

的motivitation很有可能讓128位寬的整數,但它似乎沒有興趣它。更有可能的是,特定的實現通過擴展支持這樣的整數,例如gcc中的__int128

但是,如果你的要求是高達10 ,那麼你將被罰款的標準無符號整數類型,如unsigned long long int。它保證是至少64位寬,因此,有可能範圍爲至少[0,2 -1],即稍微超過18×10 18

注意long long類型是在C99出臺,但很可能是更舊的C89編譯器支持他們通過擴展。檢查你的編譯器的文檔的任何細節。

printf()scanf()都需要格式說明符中的前綴ll。例如:

unsigned long long n = ULLONG_MAX; 
printf("lld", n); 
+0

非常感謝Grzegorz。 –

+0

我剛剛在堆棧溢出時發現了這一點,而我正在搜索如何掃描__int128。正如你的答案提到它,你知道如何掃描它嗎?我試圖存儲30位數字的數字 – 2016-09-10 16:05:39

+0

@TestitemQlstudop:請參閱[this](http://stackoverflow.com/a/11658831/586873)回答。長話短說:你需要自己處理它,或者只使用[GMP](https://gmplib.org/)庫,它提供諸如'gmp_scanf'之類的便利功能。 –