解答一下各位评论区的小伙伴

img

为啥=1求求了看不懂

if(p=a!=0)这里,先判断a!=0,a=5,a!=0成立,结果是1
所以p=1,if成立,printf显示的p的值就是1

a!=0是个逻辑表达式,这个表达式为真,所以值为1,赋值给p
因为p被赋值为1,所以if为真,进入输出p的分支,所以输出1

if(p=a!=0)。先执行:a!=0,结果为1(真)。所以相当于if(p=1),即对p进行赋值1,令p的值为1,()里的值不为0,所以执行if下的语句:printf(“%d\n",p);所以输出p的值为:1

p=a!=5.先执行a!=5,执行结果为true等价于1,再给p赋值,p=1,赋值运算再if判断中永远为true所以打印p,打印结果为1

优先级问题,!=优先级高于=
所以p=a!=0相当于 p=(a!=0),由于a!=0成立,所以结果为1,if(p=1)使得if条件是成立的,所以输出p的值为1