我想将?:
运算符集成到输出流中。这是代码
bool a;
for (int i = 0; i < 10; i++ ) {
a = rand() % 2;
std::cout << "a= " << (a) ? "true\n" : "false\n";
}
但输出是
a= 1a= 0a= 1a= 1a= 1a= 1a= 0a= 0a= 1a= 1
问题是,没有新的 line和string。我应该怎么办?
我想将?:
运算符集成到输出流中。这是代码
bool a;
for (int i = 0; i < 10; i++ ) {
a = rand() % 2;
std::cout << "a= " << (a) ? "true\n" : "false\n";
}
但输出是
a= 1a= 0a= 1a= 1a= 1a= 1a= 0a= 0a= 1a= 1
问题是,没有新的 line和string。我应该怎么办?
这是因为输出运算符的优先级<<
高于三元运算符。所以对于编译器来说它是一样的?:
(std::cout << "a= " << (a)) ? "true\n" : "false\n";
您需要明确地将括号放在正确的位置:
std::cout << "a= " << (a ? "true\n" : "false\n");
或者,a
您bool
可以std::boolalpha
直接使用它来打印它:
std::cout << "a= " << std::boolalpha << a << '\n';
您需要使用一些括号来覆盖默认的优先规则:
std::cout << "a= " << ((a) ? "true\n" : "false\n");