C ++条件三元运算符

时间:2014-12-16 19:45:36

标签: c++ conditional operator-keyword ternary

第11,12,15和16行是错误:“int类型的操作数无效,const char [2]到二元运算符<<”(我删除了“`”所以它不会显示它的代码格式)。

#include<iostream>

using namespace std;

int main(){

int md,dg,dd,mg,m,d;
cin >> md >> dg >> dd >> mg;

if (dd+dg==md+mg){
   cout << (mg>dg) ? 0 : 1 << " ";
   cout << (dg>mg) ? 0 : 1 << endl;
}
else{
      cout << (mg+md>dd+dg) ? 0 : (dd+dg-mg-md) << " ";
      cout << (dg+dd>md+mg) ? 0 : (md+mg-dg-dd) << endl;
}

system("pause");
}

3 个答案:

答案 0 :(得分:7)

你需要在三元表达式周围加上括号:

 cout << ((mg>dg) ? 0 : 1) << " ";

否则输入被解释为

 cout << (mg>dg) ? 0 : (1 << " ");

归因于operator precedence

答案 1 :(得分:0)

你所缺少的是三元表达式的括号。以下是修复。

cout&lt;&lt; ((mg> dg)≤0:1)&lt;&lt;&lt; “”;

cout&lt;&lt; ((dg> mg)≤0:1)&lt;&lt; ENDL;

cout&lt;&lt; ((mg + md> dd + dg)≤0:(dd + dg-mg-md))&lt; “”;

cout&lt;&lt; ((dg + dd> md + mg)≤0:(md + mg-dg-dd))&lt;&lt; ENDL;

答案 2 :(得分:0)

它应该是:cout<<((mg>dg)?0:1)<<endl,其他人也是如此。