谢谢。这道题我明白了。但是好象不是你那样说的。因为还有优先级的问题了。不过也谢谢你了。
追答你这个式子里:“()”的优先级最高,其次是“>=”和“
int main(int argc, char **argv)
{
char ch = 'M';
printf("result is %c\n",ch!=(ch>='A'&&ch<='Z')?(ch+32):ch);
return 1;
}
不等于也就是!=的优先级是7,是关系运算符,在逻辑与之前,也在条件运算符之前的。
追答&&在()内,与外面的 != 不冲突
追问是啊。所以我认为是先执行()内的,因为ch定义为char型,值为M,所以ch>='A'&&ch<='Z'为真得1,但!=比条件运算符优先级高,就比较ch是否等于1,结果是不等于,于是在问好前的条件判断为真,输出(ch+32)最后得到了m。这是我的思路。
追答我也是这么想的,上面那个写错了。先做!=判断,在做?:
设ch是char型变量,其值'M',表达式ch!=(ch>='A'&&ch<='Z')?(ch+32...
先算(ch>='A'&&ch<='Z')?(ch+32):ch ch = 'M',满足条件ch>='A'&&ch<='Z',则ch+32作为该判断的右值。现在,表达式简化如下 ch != ch + 32;成立,所以值为 1;ch + 32 实际上是小写字母 'm'
...则表达式ch=(ch>='A'&&ch<='Z')?(ch+32):ch的值为?
因为ch=‘A'所以 ch>='A'&&ch<='Z'为true,所以 ch=ch+32,也就是 'a'
...则表达式ch=(ch>='A'&&ch<='Z')?(ch+32):ch的值为?
所以ch='a'-'a'+'a';最终ch='a';
ch!=(ch>='A'&&ch<='z')?ch:(ch+32)。结果是A。求解释。
你给ch赋初值了么?初值是什么ch的值就是什么,因为你用"!"把后面的东西都否定了,所以当你写后面的语句的时候ch初值是什么就会输出什么。
设ch是char型变量,下列表达式ch=(ch>='A'&&ch<='Z'?(ch+32):ch的作用...
如果ch是大写字母的话就执行(ch+32)这条语句,将ch加上32转换成小写字母。否则执行把ch赋值给ch,也就是不变。整个语句的意思就是讲ch变成小写字母再赋值给它。讲解得应该能懂吧。。。
...N",表达式ch=(ch>="B"&&ch<="Z")?(ch+32):ch ch的值是__
N的ascii码值是78,表达式的含义是如果ch在字符‘B’和'Z'之间,那么ch的值加32,N在BZ之间,条件成立,所以加32.78加32结果为110,也就是字符‘n’。其实,这段代码的功能就是把大写字母转换成小写字母。
( 20)设 ch 是 char 型变量, 其值为‘A’,则表达式 ch=(ch=‘A’&&...
2. 判断(ch>=‘A’&& ch<=‘z’)的真假。在这里,ch的值为‘A’,其ASCII码值为65,满足条件。3. 由于条件为真,因此执行第一个操作,即ch 32。执行后,ch的值变为ASCII码值32,即空格。综上所述,通过正确的类型转换与三元运算符的使用,可以准确解答此题。答案为小a,题目表达式存在逻辑...
设ch是char型变量,其值为"e",且有如下的表达式 ch=(ch>="a"&&ch<=...
ch=(ch>="a"&&ch<="z")?(ch-32):ch;选D e满足(ch>="a"&&ch<="z"),所以ch='e'-32;
( 20)设 ch 是 char 型变量, 其值为‘A’,则表达式 ch=(ch>=‘A’&...
答案是小a,那题目表达式是错的,需要强转类型,不然输出是int型,应该是97
C语言一个简单的表达式求值
ch=‘A’,ch=(ch>='A'&&ch<='Z')?(ch+32):ch意思是ch>=‘A’和ch>='Z'都成立则ch=ch+32,否则ch=ch,因为都成立,所以ch=ch+32,A=65,所以ch=65+32=97=a够详细了吧,哈哈。