This question already has answers here:
Conditional operator used in cout statement
(2个答案)
1年前关闭。
我正在解决有关主教在棋盘上移动的问题。在代码的某一时刻,我有以下语句:
这将产生以下错误:
但是,我通过在代码中包含一个附加变量来立即修复此错误:
三元运算符如何工作,如何确定其返回类型(如编译器称为
不是
因为
这就是为什么您收到有关
这样你就可以了
(2个答案)
1年前关闭。
我正在解决有关主教在棋盘上移动的问题。在代码的某一时刻,我有以下语句:
std::cout << (abs(c2-c1) == abs(r2-r1)) ? 1 : 2 << std::endl;
这将产生以下错误:
但是,我通过在代码中包含一个附加变量来立即修复此错误:
int steps = (abs(c2-c1) == abs(r2-r1)) ? 1 : 2;
std::cout << steps << std::endl;
三元运算符如何工作,如何确定其返回类型(如编译器称为
<unresolved overloaded function type>
)? 最佳答案
这与推导返回类型的方式以及operator precedence无关。当你有
std::cout << (abs(c2-c1) == abs(r2-r1)) ? 1 : 2 << std::endl;
不是
std::cout << ((abs(c2-c1) == abs(r2-r1)) ? 1 : 2) << std::endl;
因为
?:
的优先级低于<<
。这意味着您实际拥有的是(std::cout << (abs(c2-c1) == abs(r2-r1))) ? 1 : (2 << std::endl);
这就是为什么您收到有关
<unresolved overloaded function type>
的错误的原因。只需使用括号std::cout << ((abs(c2-c1) == abs(r2-r1)) ? 1 : 2) << std::endl;
这样你就可以了
关于c++ - 如何确定三元运算符的返回类型? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57400874/
10-12 16:03