为什么用!!将 int 转换为 bool 时?

2022-01-14 00:00:00 integer boolean c++

以这种方式将整数转换为布尔值的原因是什么?

What can be a reason for converting an integer to a boolean in this way?

bool booleanValue = !!integerValue;

而不仅仅是

bool booleanValue = integerValue;

我所知道的是,在 VC++7 中,后者会导致 C4800 警告 而前者不会.两者还有其他区别吗?

All I know is that in VC++7 the latter will cause C4800 warning and the former will not. Is there any other difference between the two?

推荐答案

!!"的问题成语是它很简洁,很难看,容易误认为是拼写错误,容易删除!"中的一个,等等.我把它放在看看我们可以用 C/C++ 变得多么可爱"类别.

只需写 bool isNonZero = (integerValue != 0); ... 清楚.

The problems with the "!!" idiom are that it's terse, hard to see, easy to mistake for a typo, easy to drop one of the "!'s", and so forth. I put it in the "look how cute we can be with C/C++" category.

Just write bool isNonZero = (integerValue != 0); ... be clear.

相关文章