C语言中枚举类型中的枚举元素为什么只能在各元素值连续的情况下才可以正确的遍历出枚举元素?

#include<stdio.h>
enum DAY{MON=1, TUE, WED, THU=7, FRI, SAT, SUN};

int main()
{
enum DAY day;
for(day=MON;day<=SUN;day++)
{
printf("day=%d\n",day);
}
return 0;
}

那是因为本质上for 循环可以改写成
for(day=1;day<=10;day++)
{
printf("day=%d\n",day);
}
结果可想而知:1,2,3,4,5,6,7,8,9,10
连元素个数都不符合;