![](/img/trans.png)
[英]Swift converts C's uint64_t different than it uses its own UInt64 type
[英]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.