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

Python010

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

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中不同的表达

它有多种表示方法,如:a=b、a=b=赋值、a=b=++i或i++等等。如果要交换a与b的值,则可这样交换:"a=a+b,b=a-b,a=a-b"、"t=a,a=b,b=t"或"t=b,b=a,a=t"

逗号运算符的优先级是最低的,在第一个表达式中,先把b赋值给a,然后a与c逗号运算返回c当然没有任何变量接收这个返回值,如果 d=(a=b,c) 这样d的值就和c的值一样了,所以在a=b,c之后a和b的值一样

在第二个表达式中,逗号表达式用括号括起来了,所以先计算逗号运算,结果为最右边的值,所以括号后的结果就为c的值,这时a和c的值相等