我一直在编写一个程序,要求您输入两个整数,然后列出从输入的两个整数中的较小者到所输入的两个整数中较大者(包括整数)中的所有整数。我希望程序在输出中的最后一个整数之后放置一段时间,并且我已经找到了不使用for循环的方法,但我想了解为什么此代码不起作用(它只是输出较大的整数之后的一段时间)。简单C++ for循环意外输出
#include <iostream>
int main()
{
std::cout << "Enter two integers, pressing <ENTER> after each integer." << std::endl;
int num1, num2, lower, upper;
std::cin >> num1 >> num2;
if (num1 > num2)
{
upper = num1;
lower = num2;
}
else
if (num1 < num2)
{
upper = num2;
lower = num1;
}
else
if (num1 = num2)
{
upper = num1;
lower = num1;
}
std::cout << "All integers between " << lower << " and " << upper << " are:" << std::endl;
for (int val = lower; val <= upper; ++val)
{
if (val = upper)
{
std::cout << val << "." << std::endl;
++val;
}
else
{
std::cout << val << std::endl;
++val;
}
}
return 0;
}
如果输入的两个整数是1和5,为什么这个输出 5.
,而不是1 2 3 4 5.
?
反对使用错误分配,而不是比较的第一道防线是永远永远都使用const对于不改变任何价值。在这种情况下,从std :: cin流式传输之后,num1和num2应该放入const int&Right中。如果分配发生,编译器会警告你。上/下也应该是const,并且可以用最大值和最小值(标准库函数)初始化。例如:const upper = max(num1,num2); – Zoomulator 2012-01-14 15:52:34