【发布时间】:2020-04-13 22:38:42
【问题描述】:
我知道NULL总是0,但是为什么下面的代码会打印消息?
#include <iostream>
using namespace std;
int main() {
int* ptr = nullptr;
if (ptr == 0) {
cout << "Does it always work?";
}
return 0;
}
【问题讨论】:
-
“为什么下面的代码会打印消息” 为什么你不希望它打印出来?
-
"我知道
NULL总是0" 不正确。在我的平台上,NULL是#define'd 为__null。 -
在汇编级别没有区别。区别在于 C++ 类型语义。
-
@Eljay,根据here的回答“因为NULL是0”,我以为NULL被定义为
#define NULL 0 -
@catfour 短语“因为 NULL 为 0”并不意味着 NULL 必须定义为
#define NULL 0。反正有点简化了。