我最近遇到了一些代码,它们的循环形式为
for (int i = 0; i < 1e7; i++){
}
我质疑这样做是否明智,因为1e7是一个浮点类型,并且会导致i
在计算停止条件时被提升。这应该引起人们的关注吗?
发布于 2016-06-20 16:37:28
假设您的int
至少为32位,它将会工作。
然而,如果你真的想使用指数表示法,你最好在循环之外定义一个整数常量,并使用正确的类型转换,如下所示:
const int MAX_INDEX = static_cast<int>(1.0e7);
...
for (int i = 0; i < MAX_INDEX; i++) {
...
}
考虑到这一点,我会说写下
const int MAX_INDEX = 10000000;
或者,如果您可以使用C++14
const int MAX_INDEX = 10'000'000;
https://stackoverflow.com/questions/37917806
复制相似问题