공부하다가 이해가 안가는 현상이 생겨서 질문드립니다.
#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;
}
}
자살추천인가요?
나도 내가 싫어요
할 줄아냐?
물어보겠어요? dev C쓰는데, 디버깅가르쳐주는글은 죄다 비쥬얼C++기준이라 미처 익히지 못하였습니다.라고 공손히 대답할게
비주얼 스튜디오 쓰지 -- 학생이면 꽁짠데... 우선 디버깅 라인 찍어봐 니가 좀 의심가는 부분에 그냥 데이터 다 출력해보셈... 출력 함수 하나 만들어서 걍 틈틈히 복붙 복붙해서 2에서 1로 바뀌는 부분 찾아내..
swap에 들어가기 전까지는 min_id=2가 맞는데, swap에 들어갔다나오면 1로 변함. 그래서 swap이 병신인가 해서 따로 변수 a,b만들어서 집어넣었는데 이상없이 바뀌고, 배열을 넣어서 뭔가 잘못된건가? 아오 ㅠㅠㅠㅠㅠ
컴터가 주기적으로 초기화 되는데 놑북도 없는 거지라서 유습에 넣어 댕길려면 가벼워야함..헤헤
말이 되냐 mid가 독립변순데 그냥 혼자서 값이 바뀌냐 ㅋㅋㅋ
그런데 그게 진짜로 바뀌니까 문제..ㅠㅠㅠㅠㅠㅠ
잘못이 없네..if함수를 전후해서 바뀌는구나..아놔 왜이러지..if빠큐머겅! 두번머겅!
=!랑 !=이게 다른거구나..