为什么计算结果为a=0,b=0呢? 我得到的结果是a=1,b=0
按优先级来看,详情请查阅C语言运算符优先级
括号优先级最高为1,所以计算b=!'c',所以b=0,该处也是0
原式替换为a=8>4-0&&5>3+'a'%6=='b'
其次取余运算优先级最高为3,所以计算'a'%6,'a'=97,97%6=1
原式替换为a=8>4-0&&5>3+1=='b'
其次加减运算优先级最高为4,所以4-0=4 3+1=4
原式替换为a=8>4&&5>4=='b'
其次大于号优先级最高为6,所以8>4=1,5>4=1
原式替换为a=1&&1=='b'
其次判断等于/不等于的运算优先级最高为7,‘b'=98,1不等于98
原式替换为a=1&&0
其次逻辑与的运算优先级最高为11,1&&0=0
原式替换为a=0
拆开来看
b = !'c' ,'c'为真,值就是1,然后!取反,就是0,再赋值给b,因此b=0
8 > 4 - (b = !'c') 等价于 8>4-0,满足为真,因此返回1。看右边部分
'a' % 6 == 'b' ‘a’的ascii码是97,对6取余数,返回1. 1==98吗,不等于,返回0.
5 > 3 + 'a' % 6 == 'b' 等价于 5>3+0 满足为真,因此返回1.
最后合起来1&&1为1,赋值给a,因此a = 1.