C语言中,a=b=c,a=b==c,a==(b=c),a==(b==c)有什么区别?

main(){inta=1,b=2,c=3;printf("%d,%d,%d,%d\n",a=b=c,a=b==c,a==(b=c),a==(b==c));}... main()
{int a=1,b=2,c=3;
printf("%d,%d,%d,%d\n",a=b=c,a=b==c,a==(b=c),a==(b==c));
}
展开
 我来答
银凡D4
2019-06-19 · TA获得超过3.6万个赞
知道大有可为答主
回答量:1.4万
采纳率:32%
帮助的人:921万
展开全部
a=b=c,是赋值语句,从右到左,a=3,b=3
a=b==c
是逻辑语句,相当于(a=b)==c,先将b值赋值给a,然后和c比较是否相等,这句返回为0
a==(b=c),同上句.
a==(b==c),先计算括号内的b==c返回为0,然后在a==0,返回0。
=和==是2中不同的表达
美好一瞬间1985
推荐于2019-08-07 · TA获得超过3776个赞
知道小有建树答主
回答量:34
采纳率:76%
帮助的人:5230
展开全部

“=”是赋值符,把c的值赋给b赋给a,最后a、b、c的值都相等,“==”是判断符,结果为BOOL型。

1、C语言其语言同其语言般区 ,赋值操作符 与 等于 运算符C语言区。

2、= 赋值 == 等于运算 说 a=b=c, 表达式运行a值赋给b、c运行完abc值相等。

3、 a=b==c,复合表达式先a值赋给b与c比较相等则返0,否则返非零值。

4、a==(b=c),复合表达式先执行括号内容(即b值赋给c)比较a、c相等则返0否则返非零值。

5、a==(b==c),复合表达式先比较b、c值相等则返0否则返非零值比较a与(b==c)返值,看C区 = 跟 ==。

6、 PS:LZ程序风格且习惯引用stdio.h希望改附我改写程序: #include<stdio.h> int main() { int a = 1, b = 2, c = 3; printf("%d,%d,%d,%d\n", a = b = c, a = b==c, a==(b = c), a==(b==c));  return 0; }  运行结:3,0,0,0

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
桓培胜阴酉
2019-09-03 · TA获得超过3.7万个赞
知道大有可为答主
回答量:1.4万
采纳率:30%
帮助的人:715万
展开全部
C语言中一个等于号表示,将右边的值赋给左边,两个等于号在一起才表示真正的等于,是关系运算符。运算顺序都是从右到左。
上面的个程序运行的结果为
3

0

0
,0
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
示奕琛问雀
2020-03-01 · TA获得超过3.7万个赞
知道大有可为答主
回答量:1.4万
采纳率:34%
帮助的人:1006万
展开全部
=是赋值,==是关系等,=的运算级别低,==的运算级别高,=从右向左结合,==从左向右结合
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
fzh394l
2018-01-11 · TA获得超过1.1万个赞
知道小有建树答主
回答量:115
采纳率:100%
帮助的人:2.8万
展开全部

C语言中,a=b=c,a=b==c,a==(b=c),a==(b==c)有什么区别:

一个是赋值,一个是逻辑,运算顺序不同,有一个优先级的不同,还有就是结合性不同,一个是向左,一个是向右。

C语言中,a=b=c,a=b==c,a==(b=c),a==(b==c)解答方法:

第一步是最后一个a==(b==c),b是2,c是3,明显不等,所以b==c的值是0,然后a是1,和0又不等,所以整个式子值为0;第二步为倒数第二个,a==(b=c),先将c赋给b,此时b和c都为3,再判断a与b是否相等,a为1,不等,整个式子为0;第三步:a=b==c,经过上一步,此时b和c都为3,所以判断b==c为真,值为1,然后将1赋给a,输出a,就是1;第四步:a=b=c,自右向左,先将c值赋给b,再将b值赋给a,输出a,即为3,结果3,1,0,0。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式