在c和c ++中使用以下for循环是否合法:
for(double d=2.0; d<3.1; d+=0.1)
Run Code Online (Sandbox Code Playgroud)
它是C99和C++的合法语法.只要d没有在循环内部进行不正确的摆弄,它就是确定性的(应该结束).
虽然循环确实会终止,但不清楚究竟会发生多少次循环迭代.在12次迭代,的值d将被递增到,在理论上,3.1但它可以是3.099999..(或类似的东西),或者它可以是3.1000...01(或类似的东西)由于四舍五入.因此,循环是否会进行11次或12次迭代尚不清楚.您不希望依赖浮点的完全匹配.