若有定义:double a=22;int i=0;k=18;,则不符合C语言规定的赋值语句是( )

A。i=(a+k)<=(i+k);B.i=0,k=18;C.a=a++,i++;D.i=!a大神求解!!!要四个选项详解哟... A。i=(a+k)<=(i+k) ; B.i=0,k=18 ; C.a=a++,i++ ; D.i=!a大神求解!!!要四个选项详解哟 展开
 我来答
kaixingui2012
推荐于2016-06-22 · TA获得超过4.2万个赞
知道大有可为答主
回答量:1.4万
采纳率:81%
帮助的人:6500万
展开全部
A.i=(a+k)<=(i+k) ; 比较运算,结果为0,正确
B.i=0,k=18 ; 逗号运算,正确
C.a=a++,i++ ; 这是个可疑语句,a的结果是不确定的,与相应的编译器处理有关
D.i=!a 取反,非a结果是1,正确
追问
能详解下A选项吗
追答
纠正一下错误,D.i=!a 取反,a=22时,非a结果是0

i=(a+k)<=(i+k) ; 因为<=的运算优先级高于=,所以会先运算(a+k)<=(i+k) 这是个比较运算,40<=18的结果是0,所以i=0
东门沛珊庞驰
2020-05-13 · TA获得超过3万个赞
知道大有可为答主
回答量:1.2万
采纳率:27%
帮助的人:928万
展开全部
A.i=(a+k)<=(i+k)
;
比较运算,结果为0,正确
B.i=0,k=18
;
逗号运算,正确
C.a=a++,i++
;
这是个可疑语句,a的结果是不确定的,与相应的编译器处理有关
D.i=!a
取反,非a结果是1,正确
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
柏弘和宁骥
2019-01-24 · TA获得超过3万个赞
知道大有可为答主
回答量:1.2万
采纳率:26%
帮助的人:677万
展开全部
因为取余运算符(%)是对整形变量(或常量)取余数,而你的变量a是double型的,所以编译肯定会报错的。而我们知道整形可以被自动转换为float或者double,但是反过来是不行的,所以你要是想用上面的语句的话,需要加强制类型转换,即:i=(int)a%11.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
小灰机YM46NN
2014-08-14 · 超过73用户采纳过TA的回答
知道答主
回答量:144
采纳率:0%
帮助的人:148万
展开全部
貌似是C
1.正确,逗号运算符
2.i = true或者false
3.%只能整型
4.正确
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式