POST

c언어 배열의 숫자를 반대로 출력하기 (비트연산자 이용)


배열에 저장된 값을 반대로 바꾸어 출력하기

단순히 출력을 반대로하는것이 아니라 값을 바꾸어 출력을 하여 보자.




#include<stdio.h>


void print_reverse(int *pa, int n);

int main(void)

{

int a[] = { 10, 20, 30, 40, 50 };

printf("변경전 %d %d %d %d %d\n\n", a[0], a[1], a[2], a[3], a[4]);

print_reverse(a, 5);

return 0;

}

void print_reverse(int *pa, int n)

{

for (int i = 0; i < n / 2; i++) {

n--; // 배열의 길이[0~4] n을 5로 받음

pa[i] = pa[i] ^ pa[n];

pa[n] = pa[i] ^ pa[n];

pa[i] = pa[i] ^ pa[n];

/* 비트연산자를 이용한

값 교환*/

}

printf("변경후 %d %d %d %d %d\n", pa[0], pa[1], pa[2], pa[3], pa[4]);

}



저같은 경우는 temp라는 변수를 따로 주지않고 비트연산자를 이용하여 두수를 바꾸어주었습니다.

비트연산자 참고

 http://enter.tistory.com/16


temp라는 변수를 이용하게 될경우 아래와 같이 사용한다.

temp = pa[i];

pa[i] = pa[n];

pa[n] = temp;