浙江传化集团具体地址:懂c语言者进,小弟迷茫~~求教

来源:百度文库 编辑:高考问答 时间:2024/05/05 16:48:54
(28) 若变量c为char类型,能正确判断出c为小写字母的表达式是(d)
A) 'a'<=c<= 'z' B) (c>= 'a')||(c<= 'z')
C) ('a'<=c)and ('z'>=c) D) (c>= 'a')&&(c<= 'z')
(15)以下选项中非法的表达式是 (d)
A)0<=x<100 B)i=j==0
C)(char)(65+3) D)x+1=x+1
在28题中A表达就错误
而15题A表达就正确?
困惑了我很久
请详细解答
谢谢
关系运算符号 不能联用 所以你的里面那些if(x>y>=z))都不成立。 这样x>y&&x>=z 才行。
关系运算符不能这么连等
看到有人这么说
书上也没有啊

28题的A项不是语句非法,而是因为它不符合答案要求。
15题要找非法的语句,A项完全是合法的,而D项是非法语句。
x<y<z,这样一个数学表达式如果写到语句里,运算过程是先判断x和y的大小关系,x小则返回1,y小则返回0,再比较1或0与z的大小,进一步返回值。很明显,这与我们写语句的初衷完全不同。按照我们的想法,就得写成x<y&&y<z。
总之,选择题是选符合题意的答案,要按题目意思来看。

'a'<=c<= 'z' 这个表达式是合法的。
但你看,如果机器是右结合的话,首先做c<= 'z' ,成立的为1
然后做'a'<=1,所以是不能判断的

'a'<=c<= 'z' 不是非法
我不记得<=是从右向左还是从左向右算了
假设从左向右吧:
'a'<=c得到一个TRUE或FALSE值,再用这个值与‘z’比较结果就不正确了

程序中的表达式不完全等于数学表达式。

1. 要注意别用数学上的写法,还有在C中没有其他语言可以使用的and运算符
2. A,"<="优先级"<"相同,就按从左到右结合0<=x得到0或者1,再与100比较
B中"=="优先级比"="高
C中,强制类型转换运算符语法规定要用(),要转换的项是表达式时也要加()
D x+1算的结果总要放到内存中,但左边的x+1并没有对应的内存空间,赋值没地方放

支持楼上