C/C++ question on enumerators?

This appeases the compiler...

for (things = CAT; things <= Monkey; things = (animal)(things + 1) )

Otherwise you have to override the ++ operator for the animal data-type.

would it automatically jump back down to CAT

No.

or would it become undefined with a int value of 5+ ?

Yes,