C/C++ 변수초기화 과정질문이요
조회수 1142회
#include <iostream>
using namespace std;
int main()
{
int num1, num2; // 사용자에게 두 수를 입력받아 저장할 변수
int i; // 반복을 위한 변수
int oddSum = 0; // 홀수 합을 저장할 변수
int evenSum = 0; // 짝수 합을 저장할 변수
cout << "두개의 수를 입력해주세요" << endl;
cin >> num1 >> num2;
if (num1 > num2)
{
i = num1;
num1 = num2;
num2 = i;
}
// i는 num1부터 num2까지 1씩 증가하며 반복합니다.
for (i = num1; i <= num2; i++)// i는 num1 ~ num2의 값을 가짐.
{
if (i % 2 == 1) // i를 2로 나눴을 때 나머지가 1이면 즉, 홀수이면
oddSum += i; // oddSum에 해당하는 i의 값을 누적시킵니다. oddSum = oddSum + i;
else // i를 2로 나눴을 때 나머지가 1이 아닌 경우 즉, 짝수이면
evenSum += i; // evenSum에 해당하는 i의 값을 누적시킵니다. evenSum = evenSum + i;
}
cout << num1 << " 부터 " << num2 << "까지의 \n";
cout << "홀수합 : " << oddSum << endl;
cout << "짝수합 : " << evenSum << endl;
cout << "홀수 와 짝수의 합 : " << oddSum + evenSum << endl;
return 0;
}
반복문전에 if문에서 num1이 더클경우 num1과 num2의 변수값을 서로바꾼다고하는데요, 왜 i변수안에 num1을 넣나요? 그냥 num1 = num2; 라고하면안디나요? i변수를 꼭 생성하여 값을 저장해야하는지 궁금합니다. 또한 for문 안에 int i는 앞서 저정된 i = num2;랑은 다른변수인가요?
글읽어주셔서 감사합니다.
1 답변
-
예를 들어 아래와 같이 저장되어 있을 때,
num1=1; num2=2;`
두 수를 교환하기 위해서, 말씀하신대로 아래와 같이 하게 되면
num1=num2; // num1: 2, num2: 2 num2=num1; // num1: 2, num2: 2
첫 줄에서 num1에는 num2의 값인 2가 저장되고, 두번째 줄에서 이제 num1의 값은 2이므로 num2에는 2가 저장됩니다. 따라서 두 수는 바뀌지 않고 모두 2가 되어 버립니다.
그래서 보통 두 변수값을 바꾸고 싶을 때 별도의 변수를 하나 이용합니다. 질문 코드에서는 i를 이용했는데, 보통 temp라는 이름의 변수를 많이사용합니다.
다시 아래와 같은 같이 저장되어 있을 때,
num1=1; num2=2;`
아래의 코드는 num1과 num2의 값을 바꿉니다.
temp=num1; // temp: 1, num1: 1 num1=num2; // num1: 2, num2: 2 num2=temp; // num2: 1, temp: 1
코드를 한줄씩 보시면, 최종적으로 num1에는 2가 num2에는 1이 저장되어 원래의 숫자가 바뀌게 됩니다. 이 세줄은 두 변수의 값을 바꾸는 전형적인 코드이기 때문에, 외워두시면 두고두고 써먹게 됩니다.
참고로 for 루프안에 있는 변수 i도 바꿀 때 사용한 변수 i와 같은 변수입니다. 코드 작성자가 그냥 재활용한 것으로 생각됩니다. 그러나 가급적 의미를 알 수 있도록 temp(임시라는 뜻) 등으로 변수명을 만들어 사용하는 게 좋습니다.
-
(•́ ✖ •̀)
알 수 없는 사용자
-
댓글 입력