gpt4 book ai didi

c - 指针的逻辑非运算符

转载 作者:太空宇宙 更新时间:2023-11-04 01:28:07 25 4
gpt4 key购买 nike

代码:

struct person *p = NULL;
printf("%d, %d\n", !p, !!p);

在上面的代码中,! 运算符作用于指针,我知道 ! 作用于 int,但是当它作用于 指针?

指针在本质上是否被视为 int,或者 ! 进行类型转换?


我在这里找到了答案中提到的 c99 引用资料: www.open-std.org/jtc1/sc22/WG14/www/docs/n1256.pdf

最佳答案

来自 c99 标准,第 6.5.3.3 章,第 1 段

The operand of the unary + or - operator shall have arithmetic type; of the ~ operator, integer type; of the ! operator, scalar type.

和,来自 6.2.5,第 21 段,

Arithmetic types and pointer types are collectively called scalar types.

因此,可以通过一元 ! 运算符直接使用 pointer 类型。 ! 被正常评估。

也许值得一提的是,在使用指针的情况下,NULL 值是 False 以外的任何值NULL 被认为是True

关于c - 指针的逻辑非运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27599856/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com