条件表达式求值

来源:百度知道 编辑:UC知道 时间:2024/05/14 07:34:55
如果i=3,j=4,为何k=i-j?i+j:i-3?j:i

经过程序运行k=8
不明白如何得来的?
to yacinth:
虽然你的思路正确,结果也是7
但是考虑i-3?j:i运算的结果应该是3
这样考虑k=i-j?i+j:3,答案岂非应该是3了?

哦,原理是i-j为非零时就选择第一个表达式的值。呵呵

to lsjyipeng:
你的后半程怎么得出4了呢?显然是笔误了,ok?

大哥啊,程序运行结果是7啊,k=i-j?i+j:i-3?j:i 从右边开始往前算,
也就是先算:i-3?j:i,依次往前.

郁闷!k=8?也吓我一跳

不可能是8 结果是7

首先 条件运算符的结合方向是自右向左 计算i+j:i-3?j:i
然后计算k=i-j?i+j:4 i-j=-1 非零 计算出结果为7

楼主 你是刚开始学的吧?
k=i-j?i+j:i-3?j:i
按从又到左顺序:
你把它加括号 k=【i-j?i+j:(i-3?j:i)】
那么 就得先算 :i-3?j:i 结果是 3 因为0 就是冒号后面的值了

然后就是【i-j?i+j:3】 那么 结果就是 7 非0
不知到我说的详细么 LZ明白了不没呢