for循环中的int和float增量条件

时间:2014-06-09 05:56:01

标签: c++ for-loop floating-point int

我正在做一个涉及整数和浮点数的程序。假设我想在x={1,1/2,2,3,4}计算并想要使用 for-loop 。但我知道增量的条件

for(x=1;x<=4;x++)

x++=x+1

我想在x={1,2,3,4}x={1/2}处找到迭代。但我不知道如何修改 for-loop 语句;要么增加0.5或1.但如果我设置0.5,我会得到5/2和7/2的答案。

2 个答案:

答案 0 :(得分:1)

这应该有效:

for (int i=1; i<=4; i++) {
    for (float j=i; j<=std::max(1.6, i); j+=0.5) {
        cout << j << endl;
    }
}

上面的代码将打印所需的序列。

答案 1 :(得分:0)

如果0.5是您的数字列表中唯一的异常,那么可以使用以下内容完成:

for (float x = 1; x < 5; x += (x < 2 ? .5f : 1))
    std::cout << x << std::endl;

这应该 - 如果我没有犯任何错误 - 打印以下内容:

  

1   1.5   2   3   4

但是,这很难阅读,根据您的情况,它可能会变得更加复杂。这不仅使代码难以阅读,而且还增加了开销并可能减慢处理速度。因此,您应该 - 根据您的价值观 - 真正考虑shekhar的解决方案。

不是在x的最后部分修改for(),而是在循环内部进行,以使其更具可读性:

for (float x = 1; x < 5;) {
    std::cout << x << std::endl;
    if (x < 2)
        x += .5f;
    else
        ++x;
}