读书人

primer源码解决方案

发布时间: 2012-05-06 16:15:43 作者: rapoo

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++中要想输出条件表达式我们必须显示改变优先级(加括号!)

读书人网 >C++

热点推荐