C语言赋值运算,加括号区别

(a=3)!=2 第一个a数值是3,为什么是3
a=3!=2 第二个a数值是1,

运算符优先级问题
1、(a=3)直接对a赋值了3,后面的 != 是比较运算符,不会改变a的值
2、先比较 3!=2 为真,即结果为1,然后 a=1 赋值

括号的优先级更高,先算括号里面的
第一个括号优先级高,先赋值,所以a=3,之后是3!=2,这个不会改变a的值
第二个先比较3!=2,为真,返回1,然后赋值给a,则a=1


1、(a=3)直接对a赋值了3,后面的 != 是不
等于就成立,不会改变a的值,只是个判断,
并没有对a操作运算

2、先比较 3!=2 结果为真,真就是1,
然后 1赋值给a