在C
中,以下内容给了我一个隐式转换警告。我知道为什么会发生此警告。我想知道的是是否有一种可靠的方法来获取真正大的无符号数字的百分比。我知道最终结果将适合unsigned long long
,对于中间操作则不能这样说。
#define LOAD_FACTOR 0.75
#define MAX_CAPACITY (unsigned long long)((unsigned long long)-1 / sizeof(Entry) * LOAD_FACTOR)
Entry
只是一个普通的结构,任何结构都可以。
我在想:
#define MAX_CAPACITY ((unsigned long long)-1 / sizeof(Entry) / 2 + (unsigned long long)-1 / sizeof(Entry) / 4)
但是这样LOAD_FACTOR
就变成了,嗯,不是“动态的”。
编辑:我正在编译Wall
,Werror
和Wextra
Wpedantic