我想知道 if is 是否与if is!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
表示“如果c
不是NULL”,这是错误的,所以它应该2
在第一个打印if
,但它打印1
!
编辑:确实,我需要睡觉。我不知道我在想什么。谢谢你们!