#include <stdio.h> // 系统自带的用<>
int main()
{
int a, b= 250, c;
// 这个是先把b的值赋值给c,那么c=250。那么表达式就是(250<0)不成立,所以不执行a = 4语句
if ((c=b)<0) a=4;
// 把0赋值给b,这个时候b=0,整个表达式为(0),所以不成立,不执行a = 5语句
else if ((b=0)) a=5;
// 因为if条件不成立,所以执行else后面的语句,所以a = 6
else a=6;
printf("\t%d\t%d\n",a,c);//a=6,c=250
// 先判断(b==0)表达式,从前面可知,b=0所以表达式的返回的结果是1,然后把这个1赋值给了c。 (只要注意;表达式就就两个结果,表达式成立,则等于1,表不成立,则等于0)
// 这个时候把表达式的的结果1赋值给c,这时c=1,再判断表达式(1)条件成立,所以执行a=5语句,那么a=5
if ((c=(b==0)))
a=5;
printf("\t%d\t%d\n",a,c);//a = 5,c = 1
// 赋值运算符是从右到左,因为b=0,所以c=0,a=0,条件(0)不成立,所以不执行a = 4
if ((a=c=b)) a=4;
printf("\t%d\t%d\n",a,c);//a = 0,c = 0
return 0;
} |