ch!=(ch>='A'&&ch<='z')?ch:(ch+32)。结果是A。求解释。

 我来答
jsljs_1127
2012-11-19
知道答主
回答量:61
采纳率:0%
帮助的人:17.4万
展开全部
你给ch赋初值了么?初值是什么ch的值就是什么,因为你用"!"把后面的东西都否定了,所以当你写后面的语句的时候ch初值是什么就会输出什么。
edisonrush
推荐于2018-03-28 · TA获得超过554个赞
知道小有建树答主
回答量:150
采纳率:0%
帮助的人:172万
展开全部
!=的右边是:ch>='A'&&ch<='Z')?ch:(ch+32)

这个条件运算符的意思是: 如果ch是大写字母,则不变,否则在ASCII码上 +32

而 ch!=(ch>='A'&&ch<='z')?ch:(ch+32) 是一个关系表达式, 关系表达式的结果 只有true和false

你说结果是A,

是说 ch的值 是A 呢, 还是 说其他的?
如果ch的值时A, 那么 说明可能ch初始值 就是 A
否则,就是 ch+32后的 ASCII码值 刚好等于 A 的ASCII码值
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
402407
2012-11-19 · TA获得超过771个赞
知道小有建树答主
回答量:726
采纳率:50%
帮助的人:898万
展开全部
根据猜测,ch是char型?这个语句是用来判断?

如果是这样的话,那就是一个典型的关系符顺序问题。
你希望的应该是这样的顺序
ch != ((ch>='A'&&ch<='z')?ch:(ch+32))
但是实际生效的是
(ch!=(ch>='A'&&ch<='z')) ? ch : (ch+32)

于是
不管ch等于多少,如果你用这个作为判断条件,输出的结果永远为真,因为不管ch,还是ch+32都是非0。
为什么永远为真呢,即使ch=0(注意不是数值0,而是为(char)0)
ch != 0的情况:ch>='A' && ch <= 'z' 返回1或者0,永远不会等于ch,所以三目运算符?:的条件永远为真,将会返回ch
ch==0的情况

ch == (ch>='A'&&ch<='z')相等,三目运算符条件为假,返回ch+32,于是返回值也不为0
于是如果你把这个表达式作为判断条件,结果就永远是真了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2019-06-23
展开全部
刚做完这道题,我的学校给的答案是a。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式