C C 雙嘆號 運算子

2022-09-08 12:09:12 字數 503 閱讀 2873

1、問題引入

在閱讀源**中ppu.cpp中發現如下**

m_bgpage = static_cast(!!(ctrl & 0x10));

m_sprpage = static_cast(!!(ctrl & 0x8));

好奇此處!!(ctrl & 0x10)為何採用了雙嘆號的格式,「非非」豈不是沒有操作嗎,意義是什麼?

2、解答

!!(expression) 等價於!(!expression),如果express是乙個指標,最終結果就是1.這樣!!(expression)可以給bool變數賦值了

去 2 次反. 其意義在於可以把整數型別轉換為布林型別。

- (bool)islaunched
如果使用!!,則可寫成如下:

- (bool)islaunched
參考:

雙感嘆號 運算子的用法

因為c語言中,所有非0值都表示 真 所以 非0值 0,而 0 1。雙感嘆號 作用就是非0值轉成1,而0值還是0.雙感嘆號 是為了把 非0值 轉換成1,而0值還是0。不難理解,舉例 expression 等價於 expression 如果express是乙個指標,最終結果就是1.這樣 expressi...

C C 運算子 運算

規則 1 1 1 1 0 1 0 1 1 0 0 0 按位或運算 按位或運算子 是雙目運算子。其功能是參與運算的兩數各對應的二進位 也就是最後一位 相或。只要對應的二個二進位有乙個為1時,結果位就為1。參與 運算的兩個數均以補碼出現。例如 9 5可寫算式如下 00001001 00000101 00...

C C ,運算子過載

編輯運算子過載原始檔overload.cpp include using namespace std class complex complex double r,double i complex operator complex c2 void display private double rea...