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...