C/C++教程

C/C++双叹号!!运算符

本文主要是介绍C/C++双叹号!!运算符,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

1、问题引入

在阅读https://github.com/amhndu/SimpleNES源代码中ppu.cpp中发现如下代码

 m_bgPage = static_cast<CharacterPage>(!!(ctrl & 0x10));
 m_sprPage = static_cast<CharacterPage>(!!(ctrl & 0x8));

好奇此处!!(ctrl & 0x10)为何采用了双叹号的格式,“非非”岂不是没有操作吗,意义是什么?

2、解答

!!(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

这篇关于C/C++双叹号!!运算符的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!