【发布时间】:2020-04-13 16:15:46
【问题描述】:
我可以使用NULL 指针代替0 的值吗?
或者这样做有什么问题吗?
例如:
int i = NULL;
替代:
int i = 0;
作为实验,我编译了以下代码:
#include <stdio.h>
int main(void)
{
int i = NULL;
printf("%d",i);
return 0;
}
输出:
0
确实它给了我这个警告,这本身是完全正确的:
warning: initialization makes integer from pointer without a cast [-Wint-conversion]
但结果还是一样的。
- 我是否因此而陷入“未定义行为”?
- 可以这样使用
NULL吗? - 在算术表达式中使用
NULL作为数值有什么问题吗? - 在这种情况下,C++ 中的结果和行为是什么?
我已经阅读了What is the difference between NULL, '\0' and 0 的答案,了解NULL、\0 和0 之间的区别是什么,但我没有从那里得到简明的信息,如果这是完全允许的,也是正确的在赋值和其他算术运算中使用NULL 作为值。
【问题讨论】:
-
评论不用于扩展讨论;这个对话是moved to chat。
-
最好分别问两个问题,一个是针对 C 的,一个是针对 C++ 的。
标签: c++ c pointers null language-lawyer