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

如题所述

你给ch赋初值了么?初值是什么ch的值就是什么,因为你用"!"把后面的东西都否定了,所以当你写后面的语句的时候ch初值是什么就会输出什么。
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2018-03-28
!=的右边是: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码值本回答被网友采纳
第2个回答  2012-11-19
根据猜测,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
于是如果你把这个表达式作为判断条件,结果就永远是真了
第3个回答  2019-06-23
刚做完这道题,我的学校给的答案是a。

ch!=(ch>='A'&&ch<='z')?ch:(ch+32)。结果是A。求解释。
你给ch赋初值了么?初值是什么ch的值就是什么,因为你用"!"把后面的东西都否定了,所以当你写后面的语句的时候ch初值是什么就会输出什么。

ch!=(ch>='A'&&ch<='z')?ch:(ch+32)。结果是A。求解释。
!=的右边是:ch>='A'&&ch<='Z')?ch:(ch+32)这个条件运算符的意思是:如果ch是大写字母,则不变,否则在ASCII码上 +32 而 ch!=(ch>='A'&&ch<='z')?ch:(ch+32)是一个关系表达式,关系表达式的结果 只有true和false 你说结果是A,是说 ch的值 是A 呢,还是 说其他的?如果ch的值...

ch=(ch>='A'&&ch<='Z')?ch+32:ch;
语句首先执行括号中的表达式,即:ch>='A'&&ch<='Z',然后根据逻辑与的结果,分别执行:a.如果为真,即ch是大写字母字符,那么执行ch+32,根据ASCII码表,知道大写字母字符的值加上32,即是小写字母字符的ASCII值,所以就完成对大写到小写的转换 b.如果为假,即ch不是大写字母字符,那么保持ch的值...

C语言中的这句话是什么意思“ch=(ch>='A' && ch<='z'# ? #ch+32#...
语句首先执行括号中的表达式,即:ch>='A'&&ch<='Z',然后根据逻辑与的结果,分别执行:a.如果为真,即ch是大写字母字符,那么执行ch+32,根据ASCII码表,知道大写字母字符的值加上32,即是小写字母字符的ASCII值,所以就完成对大写到小写的转换 b.如果为假,即ch不是大写字母字符,那么保持ch的值...

...ch!=(ch>='A'&&ch<='Z')?(ch+32):ch最后的结果是什么?
)?(ch+32):ch;相当于:ch!= ((ch>='A'&&ch<='Z')?(ch+32):ch)先算(ch>='A'&&ch<='Z')?(ch+32):ch ch = 'M',满足条件ch>='A'&&ch<='Z',则ch+32作为该判断的右值。现在,表达式简化如下 ch != ch + 32;成立,所以值为 1;ch + 32 实际上是小写字母 'm'...

C语言中,ch=(ch>='A'&&ch<='z'?ch:(ch+32))
ch>='A'&&ch<='z'就是说ch是个英文字母,连起来就是说如果ch是字母,则保持不变,否则ascii值加上32,你看下ascii码表就知道了,比如字符'0',十进制是48,加上32就是80也就是字符'P'...

C语言 ch=(ch>='A'&& ch<='Z')? ch:(ch-32) 这一句中 ? ch:(ch-32...
A?B:C 这是一个条件运算符的用法,如果A成立则返回B,否则返回C 你这里就是 如果ch是'A'到'Z'之间的大写字母,就返回ch本身;否则返回ch-32(此时ch为小写字母,每个字母对应的小写字母的ASCII码比大些字母的ASCII码要大32,可以查看ASCII码表,ch-32就把小写字母变换成对应的大写字母了,当然你...

设ch是char型变量,下列表达式ch=(ch>='A'&&ch<='Z'?(ch+32):ch的...
如果ch是大写字母的话就执行(ch+32)这条语句,将ch加上32转换成小写字母。否则执行把ch赋值给ch,也就是不变。整个语句的意思就是讲ch变成小写字母再赋值给它。讲解得应该能懂吧。。。

设ch=‘A’,则下面的表达式值为 ch=!(ch>='A'&&ch<='Z')?ch:(ch+...
ch=!(ch>='A'&&ch<='Z')?ch:(ch+32)先计算括号里的,再和 ! 结合作逻辑非运算,其结果决定后面冒号左右两个值中哪个作为整个表达式的值赋给ch

设ch是char型变量,其值为A,则表达式ch=(ch>='A'&&ch<='Z')?(ch+32...
如果真,则返回:前的值,否则返回:后的值。这句话的意思是:if(ch>='a'&&ch<'z)ch=ch-'a'+'a';else ch=ch;因为ch='a';所以表达式为真,则ch=ch-'a'+'a';字符在内容中是以ascii保存的,所以和int型一样支持基本运算,所以ch='a'-'a'+'a';最终ch='a';...

相似回答