问题描述
我知道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 (将#修改为@)