我看到
#define NUM_MAX_VOLUME 0ui64
Run Code Online (Sandbox Code Playgroud)
在别人的代码中
0ui64 是多少号?但它似乎不是一个十六进制数字。
我很惊讶有很多答案,但没有一个指出我认为应该注意的官方权威文档,所以这里是MSDN文档:
无符号后缀:其中之一
乌乌
和
64 位整数后缀:
i64 LL LL
所以,它确实不是一个十六进制数字,但基本上是一个宏定义为零,表示一个无符号的 64 位整数。请注意0Ui64
,0ULL
、0ull
、 等也都是相同的。
当您想要确保符号和大小是固定的以便它不会出现意外或未定义的行为时,这是必要的。
这既不是标准 C++,也不是 C,而是 Microsoft 编译器功能。尽量避免它。
由于您的问题被标记为 Qt,因此建议使用quint64和Q_UINT64_C来代替,它们可以跨平台工作。所以,你会写这样的东西:
#define NUM_MAX_VOLUME Q_UINT64_C(0)
Run Code Online (Sandbox Code Playgroud)