关于条件运算符的小问题,头晕哦~~~~~~~

wuluming 2002-02-06 03:02:37
源程序如下:
#include<iostream.h>
void main()
{
int a(3),b(4),c;
c=a>b?++a:++b;
cout<<a<<","<<b<<","<<c<<endl;
c=a-b?a+b:a-3?b:a;
cout<<a<<","<<b<<","<<c<<endl;
}
结果是3,5,5 3,5,8。第二步的c为什么是8?怎么得的?
按照条件运算符的规则,从右到左化简应该是
a-b?a+b:a-3?b:a -> a-b?a+b:(a-3?b:a) -> a-b?a+b:a ->c=a=3 啊
怎么是8?
请多多指教。谢谢。
...全文
48 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
wuluming 2002-02-11
  • 打赏
  • 举报
回复
改版了,怎么给分啊??
wuluming 2002-02-11
  • 打赏
  • 举报
回复
是我晕了,其实很简单
谢谢了.
ynyn 2002-02-06
  • 打赏
  • 举报
回复
agree wangyong312(wy),很明显的呀
wangyong312 2002-02-06
  • 打赏
  • 举报
回复
c=a-b?a+b:(a-3?b:a);
3-5 3+5 0 5 3
!=0 8 3
Deling 2002-02-06
  • 打赏
  • 举报
回复
always use brackets. it's the right habit. don't depend on the precedence of operators. it's dangerous.
wuluming 2002-02-06
  • 打赏
  • 举报
回复
up,thank you

1,660

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 非技术类
社区管理员
  • 非技术类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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