因此,在相当常规的基础上,我似乎发现我声明的某个常量的类型(通常是整数,但偶尔也有其他的东西,如字符串)在它正在使用的上下文中不是理想的类型,需要强制转换或导致编译器警告关于隐式演员表。
例如,在一段代码中,我有类似下面的内容,并且遇到了有符号/无符号比较问题。
static const int MAX_FOO = 16;
...
if (container.size() > MAX_FOO) {...}
我一直在考虑总是使用给定常量允许的最小/最基本类型(例如 char、unsigned char、const char* 等,而不是说 int、size_t 和 std::string),但想知道这是否真的一个好主意,如果在某些地方它可能是一个非常糟糕的主意?例如,使用'auto' 关键字(或者可能是模板)的代码获得了一个太小的类型并溢出了看起来是安全的操作?