一道简单的C语言选择题为什么选B?

设有:inta=1,b=2,c=3,d=4,m=2,n=2;执行(m=a>b)&&(n=c>d)后n的值为A)1B)2C)3D)4请详细解释一下... 设有:int a=1,b=2,c=3,d=4,m=2,n=2;
执行(m=a>b)&&(n=c>d)后n的值为
A)1 B)2 C)3 D)4

请详细解释一下
展开
 我来答
忘至白葬不情必0T
2007-04-24 · TA获得超过3万个赞
知道大有可为答主
回答量:1.1万
采纳率:90%
帮助的人:1.2亿
展开全部
m=a>b先算,
>比=优先级高,先算a>b,结果为假,用0表示,
所以m=0,
所以(m=a>b) 这个表达式值为0,
0和任何值进行&&运算结果都为0,因此编译器会对运算过程进行优化,&&右边的表达式不再计算,所以n的值没有变.
洪羿
2007-04-24 · TA获得超过157个赞
知道答主
回答量:44
采纳率:0%
帮助的人:0
展开全部
这是个与运算问题,只要有一个为0就是0,所以当m=a>b这个式子执行之后,整个与运算就是0了,系统就不用再执行另外的一条式子,而是跳到下一语句执行了!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
fateyeah
2007-04-24
知道答主
回答量:8
采纳率:0%
帮助的人:7.1万
展开全部
这是一个与判断,两个括号表达式。
&&判断有个特点就是从左向右。如果第一个表达式不成立。第二个表达式就不行进行。前面的(m=a>b)按优先级。先a>b得结果不成立为0再执行m=0.整个前面的括号表达式的值为0.
不管后面的值为多少&&后都为0所以为了提高速度后面的就没有意义进行运算了。所以n的值没有改变。还是为初始值2
所以选B

参考资料: 脑子

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
通灵哈哈
2007-04-24 · TA获得超过177个赞
知道答主
回答量:140
采纳率:0%
帮助的人:0
展开全部
&&是逻辑与运算符 当两个都为真的时候才是真的 前面的如果为真才看后面的 如果前面的是假就不用看了 m=a>b是假所以n 不变为2
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
liujun_7177
2007-04-24 · TA获得超过649个赞
知道小有建树答主
回答量:459
采纳率:0%
帮助的人:638万
展开全部
无解
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式