鱼C论坛

 找回密码
 立即注册
查看: 3247|回复: 6

小甲鱼老师进,关于?:的结合性问题

 关闭 [复制链接]
头像被屏蔽
发表于 2011-6-29 10:14:13 | 显示全部楼层 |阅读模式
提示: 作者被禁止或删除 内容自动屏蔽
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-6-29 10:39:27 | 显示全部楼层
m==n?printf("m=n"):(m > n?printf("m>n"):printf("m<n"))
不能认为会先执行m > n?printf("m>n"):printf("m<n")
仍然是先判断:
m==n,当条件成立,执行printf("m=n")
当条件不成立执行:m > n?printf("m>n"):printf("m<n")
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-6-29 10:42:28 | 显示全部楼层
右结合的意思是说:
a>b?a:c>d?c:d
中的c>d既可以和左边的结合产生:(a>b?a:c>d)?c:d
也可以和右边的结合产生:a>b?a:(c>d?c:d)
在这种左右都可以的情况下右结合保证c>d和右边的结合
并不是说结合了就要先执行。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
头像被屏蔽
 楼主| 发表于 2011-6-29 10:58:28 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-6-29 11:43:38 | 显示全部楼层
a19715 发表于 2011-6-29 10:58
m==n?printf("m=n"):(m > n?printf("m>n"):printf("m

这和运算符优先级无关:
表达式1?表达式2:表达式3
一定是先求表达式1的值,根据表达式1的值真假再决定求表达式2或表达式3的值。表达式2和3中哪怕优先级再高也要在表达式1求值之后才能进行。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-6-29 12:24:47 | 显示全部楼层
a19715 发表于 2011-6-29 10:58
m==n?printf("m=n"):(m > n?printf("m>n"):printf("m

那楼主我问你  m==n?printf("m=n"):(m > n?printf("m>n"):printf("m<n"))
按照你的意思 括号想执行? 那第一个括号里的(“m=n”)岂不是先执行  那么第一个m==n的判断还有用么?
优先级不是你理解的那样 问你个基础的吧
1+2+3*(2+3)   如果你就是程序的话 你先会计算2+3是不是? 然后呢 难道你只把5写成答案
难道你 不从头开始计算吗  
括号只是告诉你 那些应该是一起计算的 避免产生歧义
假如说在没有括号的时候 2*1+3  别人可能理解先算2*1 然后加3  也可以理解 先1+3再*2
至少计算机会这么像 毕竟他不是人啊  所以就要给他限制一下 告诉他 2*(1+3)  这下他就知道了  
先计算 2乘以1+3的结果  所以........你知道你哪里错了么

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-6-29 17:24:28 | 显示全部楼层
我想楼主你还是看到版规吧!论坛严格规定,不能发点将标题的贴子!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-15 06:12

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表