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

关于条件运算符的结合性有关问题

2012-03-03 
关于条件运算符的结合性问题如以下例程:intf(intx){returnx 5?0:(1?f(x+1):0)}intmain(){f(0)return0}

关于条件运算符的结合性问题
如以下例程:
int   f(int   x){
        return   x> 5?0:(1?f(x+1):0);
}

int   main(){
        f(0);
        return   0;
}
如果按照右结合性,应该先算(1?f(x+1):0),可是,如果这样算的话,将会造成死循环,而事实上,VC6给出的代码是先计算x> 5的,也就是体现了左结合性,而所以有C教材都说这个运算符是右结合性的,到底是哪个地方错了,请高手们指教。

[解决办法]
为什么是先算 (1?f(x+1):0) 呢? 这里跟结合性有啥关系 ?

_1 ? _2 : _3 为啥认为是 _3 先被求值?

?: 可是著名的具备了 "短路行为 "的表达式哦.

热点排行