我想将short
初始化为十六进制值,但我的编译器会给出截断警告。很明显,它认为我试图将short
设置为正值。
short my_value = 0xF00D; // Compiler sees "my_value = 61453"
你会如何避免这种警告?我可以使用负值,
short my_value = -4083; // In 2's complement this is 0xF00D
但在我的代码中使用十六进制更容易理解。
答案 0 :(得分:3)
施放常数。
short my_value = (short)0xF00D;
答案 1 :(得分:0)
您正在分配一个不合适的int值,因此警告。你可以通过使用c-type强制转换来沉默编译器,但这通常是一种不好的做法。
更好的方法是不要这样做,并指定负值。或者,如果十六进制值更有意义,则切换到unsigned short。