"auto" 在 C++17 中不会出现整数溢出吗?
Is "auto" safe from the integer overflow in C++17?
如果我这样写代码:
auto n = 2048 * 2048 * 5;
char* buf = new char[n];
那么,auto
推导类型在 C++17 中的整数溢出是否安全?
C++中的2048
和5
有一个类型,那个类型就是int
。两个 int
相乘有一个类型,那个类型是 int
。有些值的结果不适合 int
,auto
无法阻止这种情况。
auto
可以防止意外缩小结果范围,例如:
short x = 4 * 8192;
如果我这样写代码:
auto n = 2048 * 2048 * 5;
char* buf = new char[n];
那么,auto
推导类型在 C++17 中的整数溢出是否安全?
2048
和5
有一个类型,那个类型就是int
。两个 int
相乘有一个类型,那个类型是 int
。有些值的结果不适合 int
,auto
无法阻止这种情况。
auto
可以防止意外缩小结果范围,例如:
short x = 4 * 8192;