char* p = NULL;
if (p) {
} else {
}
でpは常に偽だけど、定数NULLが0とは限らないっていうんじゃないのか?