簡體   English   中英

uint64_t的容量?

[英]Capacity of a uint64_t?

我有一點問題。 基本上,代碼:

uint64_t myInteger = 98930 * 98930;
NSLog(@"%qu", myInteger);

......只是弄錯了。 我得到'1197210308'作為輸出,這顯然是不正確的。 為什么會這樣? 它不可能是因為它們顯然達到了18個半的五分之一 任何人都有任何想法?

嘗試轉換第一個數字,以便使用該類型進行操作:

uint64_t myInteger = (uint64_t)98930 *98930;

98930是一個int ,所以你將兩個int相乘,得到一個int 你然后分配給uint64_t ,但為時已晚,你已經失去了精度。 確保其中一個操作數的類型為uint64_t ,因此另一個將被強制轉換為該類型,並且乘法將作為uint64_t乘法完成。

我對Objective-C不太了解,但在C中做同樣的事情,整數提升停在整數排名,所以你得到一個整數溢出。 嘗試:

uint64_t myInteger = 98930LLU * 98930;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM