Why use !! when converting int to bool?(为什么用!!将 int 转换为 bool 时?)
问题描述
以这种方式将整数转换为布尔值的原因是什么?
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.
这篇关于为什么用!!将 int 转换为 bool 时?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:为什么用!!将 int 转换为 bool 时?


基础教程推荐
- CString 到 char* 2021-01-01
- 非静态 const 成员,不能使用默认赋值运算符 2022-10-09
- 如果我为无符号变量分配负值会发生什么? 2022-01-01
- 为什么派生模板类不能访问基模板类的标识符? 2021-01-01
- 通过引用传递 C++ 迭代器有什么问题? 2022-01-01
- 为什么 typeid.name() 使用 GCC 返回奇怪的字符以及如 2022-09-16
- 为什么 RegOpenKeyEx() 在 Vista 64 位上返回错误代码 2021-01-01
- GDB 显示调用堆栈上函数地址的当前编译二进制文 2022-09-05
- 我应该对 C++ 中的成员变量和函数参数使用相同的名称吗? 2021-01-01
- 初始化列表*参数*评估顺序 2021-01-01