我试图以字节为单位表示16gb,并uint64_t抛出错误.
我应该使用什么样的数据类型来表示它?
unsigned long int也会抛出错误.
error: integer overflow in expression [-Werror=overflow]
uint64_t TESTBYTES = 16 * 1024 * 1024 * 1024;
Run Code Online (Sandbox Code Playgroud)
uint64_t TESTBYTES = 16ULL * 1024 * 1024 * 1024 会做的.
否则表达式将16 * 1024 * 1024 * 1024被评估为int,在您的平台上具有未定义的结果,因为您正在溢出该int类型.
ULL促进第一个任期unsigned long long,强制推广其他条款.这总是安全的,unsigned long long需要至少 64位.