在c语言中,a=(m=a>b)&&(n=c<d);是什么意思

程序段:inta=2,b=3,c=4,d=5;intm=2,n=2;a=(m=a>b)&&(n=c<d);printf("%d,%d",m,n);... 程序段:
int a=2,b=3,c=4,d=5;
int m=2,n=2;
a=(m=a>b)&&(n=c<d);
printf("%d,%d",m,n);
展开
 我来答
天云小店
推荐于2017-10-11 · TA获得超过2.8万个赞
知道大有可为答主
回答量:3281
采纳率:91%
帮助的人:770万
展开全部

a=(m=a>b)&&(n=c>d)表示将条件(m=a>b)与条件(n=c>d)进行逻辑与运算后,将结果赋值给变量a。


具体执行过程可以通过如下实例来说明:

int a=1, b=2, c=4, d=3;
int m, n;
a=(m=a>b)&&(n=c>d);  
// 先计算(m=a>b),由于a>b为假,所以m=0;
// 再计算(n=c>d),由于c>d为真,所以n=1;
// 最后计算逻辑与,此时将m=0与n=1进行与运算,结果为0,之后将最终结果0赋值给变量a,所以经过a=(m=a>b)&&(n=c>d);运算后a=0
百度网友4839b1d
2011-06-27 · TA获得超过483个赞
知道小有建树答主
回答量:195
采纳率:0%
帮助的人:64.6万
展开全部
这是个运算符优先级的问题
==的优先级大于=,这段代码可以翻译为
m=(n==b);
解释为:如果n等于b,那么m等于true(即1);否则m等于false(即0);
n=c==d也是这个意思
连接起来就是
如果m等于1或者n等于1,这个表达式的值为1,否则为0;
或者这样解释
如果n等于b或者c等于d,这个表达式的值为1,否则为0;
二者是一个意思。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hxqhuan
2011-06-08
知道答主
回答量:10
采纳率:0%
帮助的人:0
展开全部
先看括号里的,括号中的优先级要高,因为关系运算赋(<,>,<=,>=)的优先级大于赋值运算符(=),所以先判断关系表达式a>b和c>d的值,如果为真,值为1,如果为假,值为0,然后再把值分别赋给m和n,然后就是看&&(逻辑与)这个运算符了,如果m和n的值同时为1,则整个表达式的值为1,即真,如果有一个为0,则整个表达式的值为0,即假。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
282518588
2011-06-08 · TA获得超过688个赞
知道小有建树答主
回答量:1383
采纳率:50%
帮助的人:376万
展开全部
()&&() 中&&是逻辑运算符 是逻辑与 说白了就是&&两边的值都为真是 它的结果才为真(1) ;

m=a>b 的意识是 先比较a b的大小,如果a>b 则返回真(1)给m 相反这为假(0);
n=c>d同上
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
verycd1
2011-06-27 · TA获得超过114个赞
知道小有建树答主
回答量:95
采纳率:100%
帮助的人:115万
展开全部
(m=n= =b)|| (n=c= =d)
就是把(n=b)这个表达式的值(0或1)赋给m,然后(c=d)的值赋给n,
(注意,以上两条式子是数学表达式而不是c语言代码!)
最后让这两个值逻辑或(不是位或!就是1||99仍然为1)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(7)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式