Tsk, tsk, I always check which forum I'm on so I can refer to the relevant document
Unfortunately, I don't have a copy of C11, so I still refer to C99.
The paragraph 3 refers to a note 55:
The relevant part of 7.17:
So, NULL is implementation defined within the constraints of "an integer constant expression with the value 0, or such an expression cast to type void *".
Suppose NULL is "an integer constant expression with the value 0". An expression with the value 0 is equal to 0, hence NULL would be equal to 0.
Suppose NULL is "an integer constant expression with the value 0 (...) cast to type void*". NULL would already be cast to a pointer type, 0 is a null pointer constant which would be converted to void* in the comparison, and "any two null pointers shall compare equal", hence NULL would be equal to 0.
Since NULL would be equal to 0 under an exhaustive listing of cases, NULL must be equal to 0.