c++ - 是 "!"而不是 "== 0"来检查 int 是否为 0 好习惯?

标签 c++ type-conversion implicit-conversion

<分区>

假设我们有一个变量 a:

int a = 0;

可以这样吗

if(!a)
{
    // do some stuff
}

代替

if(a == 0)
{
    // do some stuff
}

?因为它有效。

在第一个示例中,int 将被转换为 bool,所以可以不使用 static_cast<bool>(a) 吗? ?如果 a 又会发生什么?大于1?

最佳答案

In the first example the int will be turned into a bool, so is it okay to do it without static_cast<bool>(a)?

是的,没关系。会有隐式转换。

Also what will happen if a is bigger than 1?

任何非 0 值都可以隐式转换为 true .相反,只有值 0 将被视为 false .

你应该选择哪种方式?两者都可以。我喜欢用我的代码表达我的意图。如果我只想在 a 时运行 if 语句等于 0 我更喜欢

if (a == 0)

因为这正是我想要的。

关于c++ - 是 "!"而不是 "== 0"来检查 int 是否为 0 好习惯?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37051093/

相关文章:

c++ - Microsoft Visual C++ 是否不使用带有 float 的 C/C++ 调用约定?

c++ - 在MFC中重绘形状

php - 无法在 PHP 中将字符串转换为 float - Laravel 5.2

c# - 在 PowerShell 中隐式转换为 C# 中定义的结构的 bool 失败

C++ 私有(private)数组访问

将 volatile 数组转换为非 volatile 数组

javascript - 当 Array 被放入 ArrayBuffer 时,如何获取 dataType?

scala - Scala中具有隐式函数的转换与隐式类之间的区别

c# - 从泛型接口(interface)类型隐式转换

c++ - 在 Qt 中告诉主类一个项目被点击