!varが と同じvar != NULLかどうか疑問に思っていvarますchar *。
これは同じことではないことを示す非常に小さな POC です (または、私が何か間違ったことをしているのですか?) が、その理由はわかりません。
int main(void) {
char *c = NULL;
if(!c){
printf("1\n");
}else{
printf("2\n");
}
if(c != NULL){
printf("1\n");
}else{
printf("2\n");
}
return 0;
}
出力は
1
2
これをx64 Arch Linux、GCC 4.8.2で実行しています
編集: 本当の睡眠が必要か、プログラムの実際の出力を読み違えているかのどちらかです! 何度か読んでください。
!c「if cis not NULL」を意味します。これは false であるため2、最初ifに出力する必要がありますが、出力し1ます !
編集:確かに、私は少し眠る必要があります。何を考えていたのかわからない。皆さん、ありがとうございました!