C++菜鸟求问

oO_So 2010-05-29 09:52:59
#include <iostream>
using namespace std;
int main()
{
int a,b;
cout<<"请输入a,b:";
cin>>a>>b;
cout<<"max="<<((a>=b)?a:b)<<endl;
return 0;
}

*********************************************************************

#include <iostream>
using namespace std;
int main()
{
int a,b;
cout<<"请输入a,b:";
cin>>a>>b;
cout<<"max="<<(a>=b)?a:b<<endl;
return 0;
}


第一个调试成功 cout<<"max="<<((a>=b)?a:b)<<endl;
第二个不成功 cout<<"max="<<(a>=b)?a:b<<endl;

请问第二个不成功的原因 谢谢
...全文
61 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
oO_So 2010-05-29
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 wyz007134 的回复:]
不止是那些 就连 cout << "max=" << a>=b?a:b << endl; 都不行
就是因为<<的优先级大于?:的,所以就结合成了相当于(cout << a>=b)?a:b << endl;
所以会出错。
如果int c = a>=b?a:b;的话就不会出错,因为=的优先级低于?:的。
[/Quote]
谢谢解答 明白了
Jasnoon 2010-05-29
  • 打赏
  • 举报
回复
运算符优先级.......
wyz007134 2010-05-29
  • 打赏
  • 举报
回复
不止是那些 就连 cout << "max=" << a>=b?a:b << endl; 都不行
就是因为<<的优先级大于?:的,所以就结合成了相当于(cout << a>=b)?a:b << endl;
所以会出错。
如果int c = a>=b?a:b;的话就不会出错,因为=的优先级低于?:的。
某某9 2010-05-29
  • 打赏
  • 举报
回复
运算符优先级的问题!
chaoliu1024 2010-05-29
  • 打赏
  • 举报
回复
运算符优先级的问题!
看这里:C++ 运算符优先级列表
wade_2003 2010-05-29
  • 打赏
  • 举报
回复

cout<<"max="<<((a>=b)?a:b)<<endl;

这样的话编译器把((a>=b)?a:b)作为一个函数去处理吧
第二种我觉得编译器无法判别吧
happy08god 2010-05-29
  • 打赏
  • 举报
回复
cout<<"max="<<(a>=b)?a:b<<endl
注意运算符的优先级,(a>=b)?a:b不能实现你所想的先运算。 <<是读取符号,用于实现输入,假设先输出
(a>=b)了,那后半部分怎么解释呢? 所以会报错。。。。。。

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧