【发布时间】:2023-04-02 01:30:01
【问题描述】:
我有一些广泛使用!! 的C++ 代码。我有点困惑,因为据我所知,!! 本身并不是一个操作员,而是两个! 一个接一个。这意味着!!foo 与foo 相同。
!! 有什么地方和理由吗?我在想它是否可能有一点明智的意义?因此,您首先对foo 执行一些位操作,然后对结果执行!?但我似乎不记得! 被用作有点明智的运算符,并且似乎也没有找到任何参考告诉我它是。据我所知,! 仅用作逻辑运算符,在这种情况下
!!foo == foo
【问题讨论】:
-
也可以写
x+++++y+1,但这是个坏主意。 -
@GrahamBorland 现在我要去那里投票,作为这个的副本。
-
您可能还想阅读这篇文章:what is !! in c?.
-
@msw 不,你不能。在两个序列点之间多次修改是未定义的行为。
!!定义完美,对应触发安全布尔转换运算符。这对于optional、variant或任何智能指针特别有用。
标签: c++ bitwise-operators logical-operators