![](/img/trans.png)
[英]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.