Mac에서 ANSI C로 작성된 명령 줄 유틸리티가 단일 링크 목록에 대한 버블 정렬 된 배열을 만드는 기능이 있습니다. 나는 루프 변수를 선언했다. C - 단 한번만 실행되는 단축형
int a = 0;
int b = 0;
나는 (빈 변수 초기화를 떠나, 즉) 축약 스타일의 루프 거품 정렬을 썼다.
for (; a < size; a++)
for(; b < size; b++)
종료하기 전에 한 번만 실행됩니다. i 변수를 사용하여 배열을 채우는 이전 for 루프는 같은 방법으로 작성되고 예상대로 실행되었습니다. 버블 정렬 루프에 대한 수정은 a = 0과 b = 0을 다시 넣는 것이 었습니다. 약식 for 루프가 실행되지 않은 이유가 있습니까?
루프 바디 외부에 a와 b가 정말로 필요합니까? 그렇지 않으면 그 안의 것으로 선언되어야합니다. 루프 외부에서 선언하면 루프 외부에서 사용되므로 루프가 실행되는 시점까지 예상 한대로 0이 아닐 수도 있습니다. –
이것은 ANSI C입니다. 변수가 내부 선언 된 경우 (즉, 'for'루프 초기 선언이 C99 모드 외부에서 사용됨) 경고가 발생합니다. –
나중에 참조 할 때,이 종류의 초보자 실수는 코드 실행을 한 번에 한 단계 씩 추적하면 즉시 명확 해집니다. 디버거에서 또는 수동으로이 작업을 수행 할 수 있습니다. 정말 더 빠르고 더 배우는 데 도움이 될 것입니다. – dmckee