有一道C语言题目我比较疑惑,希望大家给予详细讲解,如果理由充分的话我一定会加分的,谢谢大家!题目在下

以下if语句不正确的是()A:if(x>y&&x!=y)B:if(x=4)x+=y;C:if(x!=y)D:if(0){x++;y++}查询答案它说是C,理由是if后面没... 以下if语句不正确的是()
A:if(x>y && x!=y) B:if(x=4) x+=y;
C:if(x!=y) D:if(0){x++;y++}
查询答案它说是C,理由是if后面没有了表达式,但是那么A又为什么是对的呢?有点疑惑
展开
 我来答
即一即异
2009-08-22 · TA获得超过333个赞
知道小有建树答主
回答量:157
采纳率:0%
帮助的人:0
展开全部
A:既然x>y那么x必定不等于y,虽然编译上可以pass但是在程序设计上是错误的,比如你要是还要跟一个else语句,那么就得不到你要的结果。
-
B:这个表达式完全没有问题,它是先把4赋值给x,此时圆括号中表达式的的值是4,if语句判断为true的条件是圆括号中的表达式非0,也就是说满足条件,然后对x进行加y操作.
-
C:系统不知道你是不是要用下一句作为满足if条件的执行语句比如说:
if(x!=y)
x=3;
y=x+1;
那么系统会自动将x=3作为if判断的执行语句,如果有:
if(x!=y)
else y=3;
这样编译的时候就会报错,因为它默认else语句是if判断的执行语句,也就是:
if(x!=y) {
else y=3;
}
else前面没有if判断,编译器报错。
所以在对待不用执行语句的判断时,后面一定要跟花括号。
if(x!=y) {}
这样写才正确,所以不正确的是选项C.
-
D:if圆括号内字符常量的值为0,也就是为假,则不执行后面花括号内的语句,
此选项没有任何问题。
rogerfffff
2009-08-22 · TA获得超过1266个赞
知道小有建树答主
回答量:591
采纳率:0%
帮助的人:262万
展开全部
A后面也没有表达式。可能选项出问题了吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友1305448
2009-08-22 · TA获得超过443个赞
知道小有建树答主
回答量:204
采纳率:100%
帮助的人:122万
展开全部
支持三楼,B是错的,正确的判断应该是if(x==4)而不是if(x=4)
x=4是赋值语句,这里误用以后if语句总是真.
C和A都没错,只是A有点多余,但A是没有错误的.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
幸巴达
2009-08-22 · TA获得超过1.2万个赞
知道大有可为答主
回答量:6953
采纳率:38%
帮助的人:2436万
展开全部
答案很显然是错的。

A和C if语句都不完整。
对于A,里面相与的两个条件完全多余。因为x>y一定会x!=y。
B在语法上是没错的,编译也不会报错。但一般绝对不会这样写。因为if里面不是判断相等,而是赋值。相当于if(4)x+=y;

所以,我会选B
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
chentianma
2009-08-22
知道答主
回答量:23
采纳率:0%
帮助的人:21.2万
展开全部
可能是A选项后面应该有个分号(;)吧,应该是打印错了吧。由于C语言每条句子都以分号结尾,if语句也不例外,如果if语句条件后面没有语句,如A和C就要打分号(;),如果后面有多条语句就要用{}括起来
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友88656e764
2009-08-22
知道答主
回答量:15
采纳率:0%
帮助的人:0
展开全部
B是对的 因为x=4赋值后括号内的表达式的最终值为4非0(即条件为真);

A和C是都是错的 理由是if后面没有了语句(不是表达式)即使后面实在没什么可写也要加一个;(表示空语句);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式