stackoverflowers:> (我可以这么说吗?:|)
好的......这次我想知道这个警告是否应该被解决,或者应该被忽略。
它代表了在下一级推进所需的经验数量。 (对于一场比赛)
这是错误:warning: this decimal constant is unsigned only in ISO C90
这是文件:(我将只显示代码的一部分,它很长:D。)
const DWORD exp_table_common[PLAYER_EXP_TABLE_MAX + 1] =
{
2150000000, // 100
2210000000,
2250000000,
2280000000,
2310000000,
2330000000, // 105
2350000000,
2370000000,
2390000000,
2400000000,
2410000000, // 110
2420000000,
2430000000,
2440000000,
2450000000,
2460000000, // 115
2470000000,
2480000000,
2490000000,
2490000000,
2500000000, // 120
};
这只是警告的行。
答案 0 :(得分:3)
在C90中,十进制常量得到它首先适合的类型
int, long, unsigned long
在C99之后,十进制常量得到它首先适合的类型
int, long, long long
在您的系统中,2150000000
大于LONG_MAX
(当然是2147483647)。所以使用C90编译器,它是unsigned long
。对于当前的编译器,它是long long
。
你应该忽略吗?这取决于后续代码。建议不要忽略并通过附加u
后缀2500000000u
来明确地将十进制常量声明为无符号常量。