C - 增加循环中的整数

时间:2018-04-22 01:47:35

标签: c integer

我尝试在循环中增加0.001f,因此在循环1中,值为0.001f,在循环2中,值为0.002f

这就是我所拥有的(不起作用,因为它没有在值中包含i并且它不正确):

for (int i = 0; i < 34; i++) {
    GRAPHICS::DRAW_RECT(0.825f, ((maxOptions * 0.000f++) + 0.1765f), 0.23f, 0.035f, scrollerColor.r, scrollerColor.g, scrollerColor.b, scrollerColor.a); // Scroller
}

我试过制作一个这样的缓冲区,但正如预期的那样无效:

int buffer[10];
sprintf(buffer, "0.00%if", i);

我该怎么做?非常感谢!

2 个答案:

答案 0 :(得分:1)

0.000f++语法无效,因为postincrement运算符不能用于常量。它只能用于左值(即变量的名称或表示一个变量的表达式)。

假设您希望此值的范围为0.001到0.034,您可以将0.001乘以循环索引,将循环更改为1到34而不是0到33。

for (int i = 1; i <= 34; i++) {
    GRAPHICS::DRAW_RECT(0.825f, ((maxOptions * 0.001f * i) + 0.1765f),
                        0.23f, 0.035f, scrollerColor.r, scrollerColor.g,
                        scrollerColor.b, scrollerColor.a); // Scroller
}

答案 1 :(得分:0)

变量i永远不会在循环中使用。也许您可以告诉我们您想在哪里使用它,或者在问题中添加更多上下文?

但这是我第一次尝试答案:

for (float i = 0; i < 0.034f; i += 0.001f) {
    GRAPHICS::DRAW_RECT(0.825f, ((maxOptions * 0.000f++ /* This part has an issue and I can't understand what you mean by it*/) + 0.1765f), 0.23f, 0.035f, scrollerColor.r, scrollerColor.g, scrollerColor.b, scrollerColor.a); // Scroller
}

由于处理器处理浮点运算的方式,这个代码可以导致一个或多或少的循环,如dbush所指出的那样(谢谢!)

您可以按照以下方式修复:

// Include math.h at the top of your code.
for (float i = 0; fabs(i - 0.034f) > 0.0001; i += 0.001f) {
    GRAPHICS::DRAW_RECT(0.825f, ((maxOptions * 0.000f++ /* This part has an issue and I can't understand what you mean by it*/) + 0.1765f), 0.23f, 0.035f, scrollerColor.r, scrollerColor.g, scrollerColor.b, scrollerColor.a); // Scroller
}