【发布时间】:2013-06-27 04:33:45
【问题描述】:
因此,在相当常规的基础上,我似乎发现我声明的某个常量的类型(通常是整数,但偶尔也有其他的东西,如字符串)在它正在使用的上下文中不是理想的类型,需要强制转换或导致关于隐式转换的编译器警告。
例如在一段代码中,我有类似下面的内容,并且遇到了有符号/无符号比较问题。
static const int MAX_FOO = 16;
...
if (container.size() > MAX_FOO) {...}
我一直在考虑只使用给定常量允许的最小/最基本类型(例如 char、unsigned char、const char* 等,而不是说 int、size_t 和 std::string),但想知道是否这确实是一个好主意,如果在某些地方它可能是一个非常糟糕的主意?例如使用 'auto' 关键字(或者可能是模板)的代码获得了一个太小的类型并且溢出了似乎是一个安全的操作?
【问题讨论】:
-
大小通常是未签名的,这就是为什么同时存在未签名的
size_t和签名的ssize_t。 -
对于容器大小,我酌情使用
auto或ContainerType::size_type。
标签: c++ coding-style