|
http://www.hackerschool.org/HS_Boards/zboard.php?AllArticle=true&no=8159 [복사]

c언어 swap예제
a 에다 1을 입력하고 b에다 2를 입력하고 a와b의 값을 바꾸는 예제를 만들라고 한다면 c언어를 초반으로 접하시는 분들은 아래와 같이 작성할수도 있다
#include <Stdio.h>
int main(void)
{
int a , b;
printf("a :");
scanf("%d",&a); //1로 입력한경우
printf("b :");
scanf("%d",&b); //2로 입력한경우
b = a;
a = b;
printf("a : %d\nb : %d\n",a , b);
return 0;
}
c언어를 초반으로 접하신 분은 이렇게 작성할수도 있습니다.
하지만 이렇게 작성하면
b=a;
a=b;
부분에서 값손실이 일어납니다.
일단 a의 값을 b에다 넣었습니다.c언어는 위에서 아래로 읽기 때문에
a=b;에서 a값에다 b를 넣지만 위에서 b의 값이 a로 바뀐 상태로 되기때문에 둘다 a의 값과 동일해진다는 오류가 있습니다.
그래서 swap은 아래와 같은 코드
#include <Stdio.h>
int main(void)
{
int a , b;
int tmp = 0; //temporay
printf("a :");
scanf("%d",&a); //1로 입력한경우
printf("b :");
scanf("%d",&b); //2로 입력한 경우
tmp = b; //b값 미리 저장
b = a; //b값이 a로 바뀜 //swap
a = tmp; //a의 값은 tmp의 저장된 b의 값
printf("a : %d\nb : %d\n",a , b);
return 0;
}
이렇게 b의 값을 미리 tmp라는 변수의 저장을해주고
a = tmp;로 저장된 b의 값을 가져옵니다'
|
Hit : 10115 Date : 2015/10/17 07:38
|