for循环在c和c ++中是否具有double值作为索引?

use*_*316 -3 c c++ for-loop

在c和c ++中使用以下for循环是否合法:

for(double d=2.0; d<3.1; d+=0.1)
Run Code Online (Sandbox Code Playgroud)

lur*_*ker 7

它是C99和C++的合法语法.只要d没有在循环内部进行不正确的摆弄,它就是确定性的(应该结束).

虽然循环确实会终止,但不清楚究竟会发生多少次循环迭代.在12次迭代,的值d将被递增到,在理论上,3.1但它可以是3.099999..(或类似的东西),或者它可以是3.1000...01(或类似的东西)由于四舍五入.因此,循环是否会进行11次或12次迭代尚不清楚.您不希望依赖浮点的完全匹配.