나는 두 개의 정수를 입력하라는 프로그램을 작성했다. 두 개의 정수는 입력 된 두 정수 중 큰 정수로 입력 된 두 정수 중 작은 정수부터 나열한다. 프로그램에서 마지막 정수 다음에 마침표를 넣고 싶습니다. for 루프를 사용하지 않고이 작업을 수행하는 방법을 찾았지만 왜이 코드가 작동하지 않는지 이해하고 싶습니다. 그 이후의 기간). 두 개의 정수가 입력 한 경우루프 예기치 않은 출력을위한 간단한 C++
#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 &에 넣어야합니다. 할당이 발생하면 컴파일러에서 경고합니다. 상단/하단도 const이어야하며 최대 및 최소 (표준 라이브러리 함수)로 초기화 할 수 있습니다. 예 : const upper = max (num1, num2); – Zoomulator