#include<stdlib.h>
main()
{
int a=1,b=2,c=3,d=4;
if((a=2)&&(b=1)) c=2;
if((c==3)||(d=-1)) a=5;
printf("%d%d%d%d",a,b,c,d);
}
1.判断a=2与b=1时,已经同时为a与b进行了赋值。在C中,只要结果非0即为true,所以第一个if得出结果:
a=2,b=1,c=2
2.第二次判断c==3时,因为C已经被赋值为2,所以结果为false,但d被赋值为-1,为真,所以a被赋值为5
故最终的输出结果为a=2,b=1,c=2,d=-1.