C++的"var foo = !!::bar()"语法是什么意思?

8
在寻找如何使用HWND窗口全屏模式的解释时,我发现了这个回答:Win32:全屏和隐藏任务栏 Chromium的响应代码有这一行:
saved_window_info_.maximized = !!::IsZoomed(hwnd_);

从这个文件https://src.chromium.org/viewvc/chrome/trunk/src/ui/views/win/fullscreen_handler.cc?revision=HEAD&view=markup的第56行,我读到:
var bar equal not not of mother method

这个正确吗?
这个“!!::IsZoomed()”是什么意思?
为什么不只是?
saved_window_info_.maximized = CWnd::IsZoomed(hwnd_);

?


!!被用来将任何非零值转换为布尔类型的真/假。有些编译器可能会非常挑剔。 - Tomaz Canabrava
1个回答

10

!! 只是 !!,两个否定。双重否定简化为无操作,但将值转换为bool类型。因此可以考虑它作为 (bool) 的替代语法。它的优点是:

  1. 它在 C 语言中也适用,而 C89 中没有单独的 bool 类型(强制为值 0 或 1);以及
  2. MSC++ 不像对于 (bool) 那样生成愚蠢的“性能警告”。

而其余部分就是简单的 ::IsZoomed,即顶级命名空间下的函数 IsZoomed


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接