gpt4 book ai didi

c++ - cout 语句中使用的条件运算符

转载 作者:可可西里 更新时间:2023-11-01 15:39:15 25 4
gpt4 key购买 nike

通过尝试,我开始知道有必要在 cout 语句中将条件运算符放在括号中。这里有一个小例子:

#include <iostream>

int main() {
int a = 5;
float b = (a!=0) ? 42.0f : -42.0f;
// works fine
std::cout << b << std::endl;
// works also fine
std::cout << ( (a != 0) ? 42.0f : -42.0f ) << std::endl;
// does not work fine
std::cout << (a != 0) ? 42.0f : -42.0f;

return 0;
}

输出是:

42
42
1

为什么需要这些括号?在这两种情况下,条件运算符的结果类型都是已知的,不是吗?

最佳答案

?:运算符的优先级低于 <<运算符,即编译器将您的最后一条语句解释为:

(std::cout << (a != 0)) ? 42.0f : -42.0f;

这将首先流式传输 (a!=0) 的 bool 值计算。然后该表达式的结果(即对 cout 的引用)将被转换为适当的类型以用于 ?: 运算符(即 void* :参见 cplusplus.com ),并取决于该值是否为真(即,无论 cout 是否未设置错误标志),它将获取值 42 或值 -42。最后,它将丢弃该值(因为没有任何东西使用它)。

关于c++ - cout 语句中使用的条件运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9619424/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com