大整数隐式截断为无符号类型[-Woverflow]

时间:2015-12-03 11:30:49

标签: c++ gcc

    const DWORD exp_table_common[PLAYER_EXP_TABLE_MAX + 1] = {
        9000000000ULL,
    };
extern const DWORD exp_table_common[PLAYER_EXP_TABLE_MAX + 1];

当我编译时,我收到此警告:

warning: large integer implicitly truncated to unsigned type [-Woverflow]

主程序读取的值仅为400000000。

我能做些什么来解决这个警告?

1 个答案:

答案 0 :(得分:2)

显而易见的选择是使用

const unsigned long long table_common[...] = { 9000000000ULL };

注意,只有table_common的第一个元素会被9000000000ULL初始化。所有其他元素都使用0ull初始化。