关于条件运算符的结合性问题
如以下例程:
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 先被求值?
?: 可是著名的具备了 "短路行为 "的表达式哦.