繁体   English   中英

逻辑非运算符

[英]Logical not operator on pointer

码:

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

在上面的代码中, ! 我知道运算符在指针上工作! int ,但是与pointer一起使用会发生什么呢?

本质上将指针视为int! 类型转换吗?


我在这里找到答案中提到的c99参考: www.open-std.org/jtc1/sc22/WG14/www/docs/n1256.pdf

根据c99标准的第6.5.3.3章第1段

一元+或-运算符的操作数应具有算术类型; 〜运算符的整数类型; 的! 运算符,标量类型。

以及,从6.2.5第21段开始,

算术类型和指针类型统称为标量类型。

因此,可以直接将pointer类型与一元函数一起使用! 操作员。 ! 正常评估。

也许值得一提的是,在使用pointer情况下, NULL值是False,任何非NULL被视为True

无论如何,指针只是某物的地址,即数字。 所以'!' 操作符也将照常使用指针。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM