我正在阅读这篇博客文章,在Null指针常量和括号表达式部分下,作者参考了ISO C标准中的第6.3.2.3节和第6.5.1节,并说:
它没有说括号空指针常量是一个空指针常量.
严格来说,这意味着,这
(void*)0是一个空指针常量,但((void*)0)不是.
然后:
我敢肯定,大多数C实现根本治疗括号空指针常数作为空指针常数,并定义
NULL无论是作为0,((void*)0)或以其他的方式.
两个参考部分说:
§6.3.2.3
值为0的整型常量表达式或类型为void*的表达式称为空指针常量.
§6.5.1
带括号的表达式是主表达式.它的类型和值与未表示的表达式相同.如果未表示的表达式分别是左值,函数指示符或空表达式,则它是左值,函数指示符或void表达式.
粗体句是否与提交人声称((void*)0)不是空指针常量相矛盾?