공부하다가 이해가 안가는 현상이 생겨서 질문드립니다.

#include <iostream>
using namespace std;

void sortArray(int arr[], int size );//선택정렬함수만드는중 
void swap(int &arr1,int &arr2);      //두수교환함수 
void Print(int arr[], int size);         //배열을 출력해주는 함수 

int main(int argc, char* argv[])
    int arr[5] = {5,2,1,8,3};
    
//전, 후 출력.
    
    system(\"PAUSE\");
    return 0;
}

void sortArray(int arr[], int size)
{
     int min_id;
     int j=0;
     min_id = j;
     
     for(int i=1;i<=size-1;i++)
     {
             if(arr[min_id]>arr[i]) min_id = i; //여기서 arr[1]부터 arr[4]까지의 원소를 arr[0] = 5랑 비교하고 비교해서 가장 작은 원소의 
                                                               //주소값?이 min_id로 들어감. 그러니깐 min_id는 첨엔 0이었다가 1로 바뀌고 2로바뀌고
                                                               //8이랑 3은 arr[min_id]=1보다 크니까 for문 끝날때까지 계속 2임.
     }
     //for문이 다 돌아가면 min_id는 2가 됨. 확인해봤음.
     if(min_id =! 0) swap(arr[0], arr[min_id]);
     //그런데! swap에 들어갔다가 나오면 갑자기 min_id가 1로 변함.
    //왜 1로 변할까요?
    
}
void swap(int &arr1, int &arr2)
{
       
     arr1 = arr1^arr2;
     arr2 = arr1^arr2;
     arr1 = arr1^arr2;
}
void Print(int arr[], int size)
{
     for(int i=0;i<=size-1;i++)
     {
             cout<<arr[i]<<endl;
     }
}

자살추천인가요?
나도 내가 싫어요