带有for循环的auto关键字产生奇数结果 [英] auto keyword with for-loop produced Odd result

查看:116
本文介绍了带有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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆