我一直在編寫一個程序,要求您輸入兩個整數,然後列出從輸入的兩個整數中的較小者到所輸入的兩個整數中較大者(包括整數)中的所有整數。我希望程序在輸出中的最後一個整數之後放置一段時間,並且我已經找到了不使用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