虽然早在两年前,自己已经系统地学习过C语言,并且也通过了全国二级等级考试,可是当现在重新在学的时候,还是觉得有许多问题难以理解!的确,学无止境!
所谓“学,然后知不足,教,然后知困。”C语言的确博大精深。就拿逻辑运算符来说,它也并非我们想象中的那么简单,当许多运算符综合在一起,可能会很复杂。前些日子,刚刚学到运算符这边,本以为自己曾经学过而且这里又不是难点,应该不会出太大问题,可是做完习题之后,结果却叫人瞠目结舌。
之后,我们班上同学在一起系统地讨论过,可是对于答案仍然无法理解。后来,经过老师点拨之后终于有所领悟。
下面说说逻辑运算符的混合运算:
1、x=y=z=0;
c=++x||++y&&++z;
printf("x=%d,y=%d,z=%d",x,y,z);
结果:x=1,y=0,z=0
解释:由于第一个是“或”运算符,当++z为1时,它具有短路特性,屏蔽掉后面的运算符。还有,c语言的编译程序在遇到此类逻辑表达式的时候,会进行优化,即使后面的“++”的优先级比逻辑运算符高,它也不会首先执行它,而是仍然从左至右执行逻辑运算符。
2、x=y=z=0;