enum types and casting

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello. Just now I learnt that enums can be very usefully used as types, and was experimenting some with it. The following questions arose.

1. Are enums allowed as types only in C++ and not in C? gcc rejects using an enum as a type whereas g++ accepts it.

2.

Consider:

enum BODY { SUN, MOON, STAR } ;
enum PLANET { EARTH, VENUS, MARS, PLUTO } ;

int main ( void )
{
	BODY body ;
	// body = 1 ;         // gives error
	// body = EARTH ;     // gives error
	body = (BODY) 1 ;     // does not give error. expected.
	body = (BODY) EARTH ; // does not give error. expected.
	body = 3 ;            // does not give error. unexpected.
	body = (BODY) PLUTO ; // does not give error. unexpected.
}

When the target enum of the cast contains no name that has the same integer value as the value being casted, how does g++ accept the cast? Is this expected behaviour or a bug?

Thanks as always.

Shriramana Sharma.

P.S: Oops, silly me, Pluto isn't a planet any more...

-
To unsubscribe from this list: send the line "unsubscribe linux-c-programming" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Assembler]     [Git]     [Kernel List]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [C Programming]     [Yosemite Campsites]     [Yosemite News]     [GCC Help]

  Powered by Linux