#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; } |