首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

primer源码解决方案

2012-05-06 
primer源码cout (i j ? i : j) VScout (i j) ? i : j有何不同?[解决办法]不一样,因为的优先

primer源码
cout << (i < j ? i : j); VS cout << (i < j) ? i : j;有何不同?

[解决办法]
不一样,因为<<的优先级高于?

第一个因为被括起来,整个括号内被视为一个表达式,输出的是 i 或 j的值。

第二个则仅仅括号内被计算,后面的? i:j则在cout处理完成后才被计算,计算结果被抛弃。所以输出的是(i<j)的值。
[解决办法]
像这样的表达式,最好能写个小程序,在程序中测试一下通过结果来分析其不同。
[解决办法]
cout << (i < j) ? i : j;是会编译出错的,因为<<优先级比条件运算符?:高,这样这条语句就等价于
cout << (i < j) //返回cout
cout ? i : j; //是不是出错了啊??!
在C++中要想输出条件表达式我们必须显示改变优先级(加括号!)

热点排行