C99 6.3.2.3/3 An integer constant expression with the value 0, or such an expression cast to type void *, is called a null pointer constant.55) If a null pointer constant is converted to a pointer type, the resulting pointer, called a null pointer, is guaranteed to compare unequal to a pointer to any object or function.
Does it says that two null pointers don't compare equal? But they do:
int *a = 0;
int *b = 0;
assert(a == b); // true
I wonder what is unequal in this case?