为什么当int = 0时while(int)结束?

Hni*_*ahp 4 c++ boolean implicit-conversion do-while

我试图在C ++中找到与Java的in.hasNextInt等效的输入,我发现了这一点。

#include <iostream>
#include <vector>

int main ()
{
  std::vector<int> myvector;
  int myint;

  std::cout << "Please enter some integers (enter 0 to end):\n";

  do {
    std::cin >> myint;
    myvector.push_back (myint);
  } while (myint);

  std::cout << "myvector stores " << int(myvector.size()) << " numbers.\n";

  return 0;
}
Run Code Online (Sandbox Code Playgroud)

但是我真的不明白为什么当输入为0时输入循环会停止。它的while(myint)循环也使我感到困惑,因为myint它是整数而不是布尔值。当我们输入其他内容时,它可以作为布尔值工作,myint但我认为0仍然可以作为整数。有人可以向我解释一下吗?

Bla*_*aze 6

int转换为bool隐式。看这里

零值(对于整数,浮点数和无作用域枚举)以及null指针和null指向成员的值将变为false。所有其他值都变为true。