Converting Pointers to Types of the Same Size

The C compiler allows the conversion of pointer types to integral data types of the same size in global initializations. Since this type of conversion does not conform to the ANSI C standard, it is only available if the ANSI Strict setting is disabled.

Converting a Pointer to a Same-sized Integral Type

char c;
long arr = (long)&c; // accepted (not ISO C)

See Checking for Standard C and Standard C++ Conformity for more information on this setting.