[英]Use of logical not operator (twice) on right hand side of expression with pointer variable
[英]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.