C语言中,a=b=c,a=b==c,a==(b=c),a==(b==c)有什么区别main(){int a=1,b=2,c=3;printf("%d,%d,%d,%d\n",a=b=c,a=b==c,a==(b=c),a==(b==c));}

来源:学生作业帮助网 编辑:六六作业网 时间:2024/11/26 01:34:33
C语言中,a=b=c,a=b==c,a==(b=c),a==(b==c)有什么区别main(){inta=1,b=2,c=3;printf("%d,%d,%d,%d\n",a=b=c,a=b==c,a

C语言中,a=b=c,a=b==c,a==(b=c),a==(b==c)有什么区别main(){int a=1,b=2,c=3;printf("%d,%d,%d,%d\n",a=b=c,a=b==c,a==(b=c),a==(b==c));}
C语言中,a=b=c,a=b==c,a==(b=c),a==(b==c)有什么区别
main()
{int a=1,b=2,c=3;
printf("%d,%d,%d,%d\n",a=b=c,a=b==c,a==(b=c),a==(b==c));
}

C语言中,a=b=c,a=b==c,a==(b=c),a==(b==c)有什么区别main(){int a=1,b=2,c=3;printf("%d,%d,%d,%d\n",a=b=c,a=b==c,a==(b=c),a==(b==c));}
C语言和其他语言不同,在其他语言中,一般不区分 赋值操作符 与 等于 运算符,但是C语言很区分.
= 是赋值
== 是等于运算
也就是说,
a=b=c,是一个表达式,运行到这里时,将a的值赋给b、c,运行完后abc的值相等;
a=b==c,是一个复合表达式,先将a的值赋给b,然后与c比较,如果相等则返回0,否则返回一个非零值;
a==(b=c),是一个复合表达式,先执行括号中的内容(即将b的值赋给c),然后比较a、c,如果相等则返回0,否则返回一个非零值;
a==(b==c),是一个复合表达式,先比较b、c的值,如果相等则返回0,否则返回一个非零值,然后比较a与(b==c)的返回值(注意这里不是再比较a与b或c,以前就错在这里过,希望LZ注意).
可以看到C是区分 = 跟 == 的,虽然对新手很麻烦、容易错,但是一旦熟练之后会觉得很灵活,能把赋值语句放到任何你喜欢的地方.
PS:LZ的程序风格不好,而且还不习惯引用stdio.h,希望改正.附我改写的程序:
#include
int main()
{
int a = 1,b = 2,c = 3;
printf("%d,%d,%d,%d\n",a = b = c,a = b==c,a==(b = c),a==(b==c));
return 0;
}
运行结果:3,0,0,0