!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 c
is not NULL」を意味します。これは false であるため2
、最初if
に出力する必要がありますが、出力し1
ます !
編集:確かに、私は少し眠る必要があります。何を考えていたのかわからない。皆さん、ありがとうございました!