【发布时间】:2011-05-30 10:48:41
【问题描述】:
在this answer 中,sassman 初始化一个指针:
zend_class_entry* ce = 0L;
我的问题是——这有效吗?我会说它不是,用空指针初始化变量或者一个未修饰的(并且可能强制转换为
void *) 0 常量,或者一些计算结果为 NULL 的宏应该被使用。
但是,我在支持这种解释的标准中找不到明确的语言。它只是说:
值为 0 的整数常量表达式,或这种类型的表达式 void *,称为空指针常量。
【问题讨论】:
-
NULL 是 0x0 等于 0L...所以我看不出这里有什么问题。
-
@JustSid:在 C 中,
NULL被定义为(void*)0或类似的东西。 -
@JustSid:这里的“0x0 等于 0L”到底是什么意思? “平等的”?比较相等?但
0x0也等于0.0,但0.0不能用作空指针常量。 -
0L 是一个整数,写成十六进制,它的 0x0 可以用作指针地址。 NULL = 0x0 = 0L。但! 0.0f 是浮点数,因此与 0L 等整数不同。这就是使 0x0 等于 0L 但不等于 0.0f 的原因
标签: c