Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
循环练习的C++ 下面你可以找到一个带有循环for的基本C++练习,问题是:循环运行后i的值是什么。显然,这个值是5_C++_For Loop - Fatal编程技术网

循环练习的C++ 下面你可以找到一个带有循环for的基本C++练习,问题是:循环运行后i的值是什么。显然,这个值是5

循环练习的C++ 下面你可以找到一个带有循环for的基本C++练习,问题是:循环运行后i的值是什么。显然,这个值是5,c++,for-loop,C++,For Loop,我的问题是,在第5次运行i=5时,a的值是100,循环是否应该停止,因为条件是a,如果不知道平台上浮点实现的细节,您就无法确切地告诉此代码将发生什么;C++标准使这个有意义地灵活。 本质上,0.01可能是最接近该双精度文字的浮点值的近似值。因此,提前或以其他方式满足停止条件a

我的问题是,在第5次运行i=5时,a的值是100,循环是否应该停止,因为条件是a,如果不知道平台上浮点实现的细节,您就无法确切地告诉此代码将发生什么;C++标准使这个有意义地灵活。

本质上,0.01可能是最接近该双精度文字的浮点值的近似值。因此,提前或以其他方式满足停止条件a<1e2

请注意,与0.01一起,1e1是double类型的文本

因此,向浮动的转换使事情更加复杂。然后考虑浮点的严格性。


长话短说:不要使用浮点数作为循环中的索引。

本练习旨在说明浮点和双精度等,浮点数通常没有程序文本中所示的精确十进制值

0.01十进制无法用所用的二进制浮点格式精确表示,因此,将10乘以五次不会得到100.0


参见:

您的代码不编译。现在就修复它。谢谢。开始使用一致类型:A是浮点,而所有的文字都是双。我没有编写代码,它是C++基础验证的练习。@劳伦提使用CUT。
#include <iostream>
using namespace std;
int main(void) {
    float a;
    int i = 0;
    for(a = 0.01; a < 1e2; a *= 1e1)
        ++i;

    return 0;
}