求C语言题,我是初学者,请讲详细点

若变量均已正确定义并赋值,以下合法的C语言赋值语句是A)x=y==5;B)x=n%2.5;C)x=n=1D)x=5=4=1;答案是A为啥C若作为一个表达式是否合法为啥A中... 若变量均已正确定义并赋值,以下合法的C语言赋值语句是
A)x=y==5;

B)x=n%2.5;

C)x=n=1

D)x=5=4=1;
答案是A
为啥
C若作为一个表达式是否合法
为啥
A中那连续的两个赋值号是怎么回事
展开
 我来答
18388138
2011-07-06 · TA获得超过1956个赞
知道小有建树答主
回答量:1104
采纳率:40%
帮助的人:744万
展开全部
A)x=y==5;

// 正确,x=y==5等价于x=(y==5), ==号是判断两端是否相等,若右边等于左边,则y==5表达式的值为1,若不等,则为0,假如相等,就等于说把1赋值给了x,若不等就是说把0赋值给x。=号是赋值,右边的值给左边,==是判断,右边是否等于左边。==的优先级高于=,故先算==再=。故x=y==5同等于 x=(y==5);

B)x=n%2.5;

//错误,%是模除符号,就是求余数用的,用这个符号,两边必须是整型,说白了两边都得是整数,不能是小数。

C)x=n=1

//很明显,缺少分号,一个语句的最基本要求就是,以分号结束。如果做为一个表达式是合法的,x=n=1同等于 x=1,n=1;

D)x=5=4=1;

//错误,赋值的最基本要求,被赋值的一定是变量,不能是常量,也就是说左边是变量,右边可以是常量,或者已经被赋值的变量, 因为5 4 都不是变量,故错误。
zxpointer
2011-07-05 · TA获得超过4102个赞
知道大有可为答主
回答量:1868
采纳率:33%
帮助的人:1210万
展开全部
B错 取余运算要求两侧操作数均为整型
C错 少了分号是表达式,不是语句。 作为表达式是合法的
原因是从右运算 把1赋给n n的值变为1 而n=1这个表达式的值又是1 再赋给x
D错 左值必须是变量 不能是常量
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
WSN石家庄业余球王1
2011-07-05 · TA获得超过1235个赞
知道小有建树答主
回答量:880
采纳率:100%
帮助的人:374万
展开全部
C少了分号
A的话等价于x=(y==5);
如果y==5为真的话,也就是y的值为5,则x的值为1,否则x为0
追问
关于x=(y==5)
请详解一下
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
爱晒娃的Barry
2011-07-05 · TA获得超过1033个赞
知道小有建树答主
回答量:2080
采纳率:0%
帮助的人:633万
展开全部
==优先级高于= 所以A等于 x=(y==5) 比较y和5结果赋给x
==是比较
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友8f22736
2011-07-06
知道答主
回答量:11
采纳率:0%
帮助的人:0
展开全部
首先A里面“==”是在判断符号两端的值是否相等,相等为1,不等为0,比如(1==1)的值为1,(1==2)的值为0,所以A是把y与5 的值进行判定后赋给x,是对的;
B里面%是求余数,两端都应当是int型;
C少了分号,加上分号作为表达式就合理
D5=4=1这种用法本来就错了。单个的“=”是赋值的意思,如果改成x=5==4==1;的话就对了
“==”同级,所以从左往右计算,5==4得出值为0,然后0==1得出值为0,最后把0赋值给x
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
y892970255
2013-02-17
知道答主
回答量:17
采纳率:0%
帮助的人:2.5万
展开全部
记住==是判断,=是赋值。%求余,两边均是整数。赋值左边是变量右边是常量
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式