간단한데...이해가..안돼요 ㅡㅡ;

keaton32의 이미지

#include
#define TOTAL_ELEMENTS (sizeof(array) / sizeof(array[0]))

int array[] = {23,34,12,17,204,99,16};
int main()
{
int d;
d = -1;
while(d printf("%d\n", array[d+1]);
d++;
}
return 0;
}

왜 while 문 내부의 명령문이 실행이 안되는 지 이해가 안갑니다. ㅡㅡ;

익명사용자의 이미지

암시적 형변한에 의해 d가 unsigned int로 변경된 상황입니다.
d는 -1이 아니고 2^32의 값을 가지고 비교하게 됩니다.
(int)(TOTAL_ELEMENTS - 2)로 바꿔서 해보세요.