bool foo = true 和 bool foo = 1 有什么区别吗?

You*_*mil 1 c++ integer boolean literals implicit-conversion

bool在C++中,将a赋值给true和将其赋值给1(或任何非零整数)之间有什么区别吗?

我见过许多有竞争力的程序员甚至在提前编写代码的情况1下都使用true而不是,所以我想知道除了打字速度更快之外是否还有任何好处。

Ted*_*gmo 5

...并将其分配给 1(或任何非零整数)?

在您的简单示例中,效果是相同的。

// all true:
bool foo = true;
bool bar = 1;
bool baz = 123;
Run Code Online (Sandbox Code Playgroud)

有什么区别吗?

我开始考虑的是可读性/意图。分配1给变量表明程序员希望这是一个带有数值的变量。仔细检查代码后,我会注意到它被分配给了bool(我会true在继续阅读代码之前立即将其更改为)。

那么简单的情况下,你会得到一个惊喜:

#include <iostream>

void foo(bool) { std::cout << "bool\n"; }
void foo(int) { std::cout << "int\n"; }   // oups someone added an overload

int main() {
    foo(1);   // I use 1 instead of true because it's so much shorter
}
Run Code Online (Sandbox Code Playgroud)