use of if (!cptr) and if (cptr), where cptr is a *)

Walter Murray walter at hpclwjm.HP.COM
Thu Jul 27 02:44:37 AEST 1989


Jeff Leyser writes:

> OK, this may be meaningless, but out of curiosity is:
> 	if (cptr == (int) 0)
> illegal C, or simply compleat garbage?

It's perfectly legal, if a little misleading.  As a further
examle of the latitude you have in writing a null pointer
constant, the following would also be legal.

   if (cptr == (signed short)0.3+sizeof(char)-'\1'
	       +sizeof((long int*)myfunc()+3,000)-sizeof'M');

I think any ANSI-conforming compiler will accept this statement.

Walter Murray
Not speaking for Hewlett-Packard or X3J11



More information about the Comp.lang.c mailing list