求帮我康康这几个printf有啥区别。有两个等号的话不是相等吗?但a和b的值又不同。 ( ̄ε(# ̄)
1、赋值,a、b、c的值都是3
2、==比=优先级高,先执行b==c成立为1,对a赋值,此时a=1 b=3 c=3
3、括号优先级高,b=c赋值还都是3,然后和a比较,不相等为0
4、括号优先级高,b==c成立为1,此时a也是1,比较成立,输出1
所以,最后输出 3 1 0 1
这个是运算符的优先级问题【「C语言」C语言程序设计.浙江大学.翁恺 2.2.2 表达式:运算符优先级】https://mbd.baidu.com/newspage/data/videoshare?nid=sv_9098461848715033017&source=search&tpl=search
1.a=b=c,这是赋值,等价于b=c;a=b;最终print的是a的值
2.a=b==c,因为赋值的优先级低,所以先执行b==c,结果为真,所以a=1
3.a==(b=c),先执行b=c,然后执行a==b,由于之前已经把a赋值成了1,所以这里结果为假
4.a==(b==c),先判断b==c,结果为真,再判断a==1,结果为真