CPP错误:表达式中的整数溢出

tan*_*dem 1 c++ types

我试图以字节为单位表示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)

Bat*_*eba 6

uint64_t TESTBYTES = 16ULL * 1024 * 1024 * 1024 会做的.

否则表达式将16 * 1024 * 1024 * 1024被评估为int,在您的平台上具有未定义的结果,因为您正在溢出该int类型.

ULL促进第一个任期unsigned long long,强制推广其他条款.这总是安全的,unsigned long long需要至少 64位.