在 gcc 中,向小于的整数类型添加或减去常量会int
导致int
.
#include <cstdint>
#include <cstdio>
int main()
{
int8_t wat = 5;
printf("%zd\n", sizeof(wat + 1));
return 0;
}
给出 4。我在使用带有 . 的简单+=
语句时注意到了这一点-Wconversion
。设置了警告标志后,
#include <cstdint>
int main()
{
int8_t wat = 5;
wat += 5;
return 0;
}
给
wat.cpp:7:6:警告:从“int”转换为“int8_t {aka signed char}”可能会改变其值 [-Wconversion]
有没有办法抑制这个警告?为什么会出现这种情况?铸造似乎没有奏效。