簡體   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