在阅读https://github.com/amhndu/SimpleNES源代码中ppu.cpp中发现如下代码
m_bgPage = static_cast<CharacterPage>(!!(ctrl & 0x10)); m_sprPage = static_cast<CharacterPage>(!!(ctrl & 0x8));
好奇此处!!(ctrl & 0x10)为何采用了双叹号的格式,“非非”岂不是没有操作吗,意义是什么?
!!(expression) 等价于!(!expression),如果express是一个指针,最终结果就是1.这样!!(expression)可以给bool变量赋值了
去 2 次反. 其意义在于可以把整数类型转换为布尔类型。
- (BOOL)isLaunched { if(self.launchCache) return yes; else return NO; return NO; }
如果使用!!,则可写成如下:
- (BOOL)isLaunched { return !!self.launchCache; }
参考:https://blog.csdn.net/hherima/article/details/44944927