我尝试在循环中增加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);
我该怎么做?非常感谢!
答案 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
}