#include<iostream.h>
void main()
{
int i(3),j(4),k;
k=(i>j)?++i:++j;
cout<<i<<'\t'<<j<<'\t'<<k<<endl;
k=i-j?i+j:i-3?j:i;/*看不懂,不知道顺序是怎么样的?*/
cout<<i<<'\t'<<j<<'\t'<<k<<endl;
}
首先,我们必须知道,?:是条件操作符,它的优先级次于算术操作符,并且它是右结合的
好,由k=(i>j)?++i:++j;知道
i=3,j=5
那么k=i-j?i+j:i-3?j:i;可等价于
k=(i-j)?(i+j):((i-3)?j:i)
那么即为
k=-2?8:(0?5:3)
你应该知道(0?5:3)的结果吧 是3
那么进一步化简为
k=-2?8:3
由非0即1可知
k=8
所以输出结果
3 5 5
3 5 8
[[it] 本帖最后由 彦宏 于 2008-4-1 23:02 编辑 [/it]]