In an enumeration whose underlying type is not fixed, the type of the first enumerator is unspecified if it has no initializer, meaning that an implementation could choose either a signed or an unsigned type. As a result, the values of one and two in this example could be either -1 and 0 or very large unsigned numbers:
enum { zero, one = zero -1, two };
It would be better if 9.8.1 [dcl.enum] paragraph 5 specified the type of the first enumerator as a signed type.