如果NULL不是全零位,则全零指针值是否也是'false'?

问题描述

我知道C编译器不需要为NULL的位表示使用全零,但它们是标准要求NULL进行评估的 * *在布尔值上下文/比较中为false。因此,下面程序中的 2nd printf将始终输出 false

但是我想知道的是:在NULL *不是 *全零的系统上,将一个 * is *全零的指针值在布尔上下文/比较中也评估为假?换句话说,下面程序中的 1st printf是否会输出 true

或者以一种稍微不同的方式问:我可以依靠calloc来生成一个指针值,该值在布尔上下文/比较中将始终为false? this问题的第一个答案使用memset清除名为long*的{​​{1}}的位,然后继续说y是UB,因为{{ 1}}可以是“陷阱表示”(无论是哪种形式)。 y==0也在清除位,所以 第一 y中的calloc也是UB吗?


o->p

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)