带有for循环的auto关键字产生奇数结果 [英] auto keyword with for-loop produced Odd result
本文介绍了带有for循环的auto关键字产生奇数结果的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
当我使用auto关键字执行此for循环时,我得到了奇怪的结果。有人可以解释为什么我在这个for循环中得到了奇怪的结果吗?
i have got weird result when i executed this for-loop with auto keyword. could someone explain why i got weird result in this for-loop?
#include <iostream>
int main()
{
for (auto i = 0u; i < 3u; ++i) // Okay
{
std::cout << i << ' ';
}
for (auto i = 2u; i >= 0u; --i) // ?????? Awful
{
std::cout << i << ' ';
}
}
推荐答案
你将你的值声明为无符号所以当我从0变为-1时它被视为无符号值0xFFFFFFFF,循环继续。如果您将第二个循环语句更改为
You are declaring your values as unsigned so when i goes from 0 to -1 it is treated as the unsigned value 0xFFFFFFFF, and the loop goes on forever. If you change the second loop statement to
for (auto i = 2u; i > 0u; --i)
// or
for (auto i = 2u; i != 0xFFFFFFFFu; --i)
// or better
for (auto i = 2; i >= 0; --i) // use signed numbers
它会起作用。最好尽可能使用带符号的数字来避免这样的问题。
it will work. It is better to use signed numbers as much as possible to avoid issues such as this.
这篇关于带有for循环的auto关键字产生奇数结果的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文