C语言中的while循环语句

# include <stdio.h>
main()
{ int a = -2, b = 0;
while ( a++&& ++b);
printf ("% d,% d\n", a, b);
}
程序运行后输出的结果是1,2
请问各位,为什么a =1?

这个就是i++和++i的区别,i++是先运算,然后i再自加,++i是先自加,然后再运算。像这题里面,第一次while,所以while(a++&&++b)就是所先a是-2为真(判断完后a自加变为-1)再判断++b,b先自加为1,判断得到真,所以继续循环。第二次while,a是-1为真,然后自加到0,再判断++b,b先自叫为2,判断得真,继续循环.重点就是第三次,此时while(a++&&++b)里面,是为while(0&&++b),因为前面先为假,&&的后面就不再判断,++b语句也就不运行。此后a自加为1,++b不运行,b依然是2.所以结果是1,2追问

while(0&&++b)
这个都为假了,为什么还要运算a++

追答

这里while(a++&&++b)是先判断a++再判断++b。a++是一个语句,当判断a的值后,必定会执行完a++这句话,后面++b不运行,是因为&&的问题,a++是在&&之前运行的,所以a++运行了。说得有点绕,能懂吗?就是说a++执行后,a值为1,返回值为0

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-06-01
while循环是对while括号后面的表达式进行真假的判断,,比如你用的a,C语言中有这样的规定,如果a=0;那么a 表达的就是假,如果a不为0,那么他表示的是真,因此,上面的循环,只要a不等于0,那么循环就一直进行
刚开始学的时候,我一直以为,只有在等于1的时候才是真,等于2他就不能循环了,其实那是错的,编译器判断真假条件的标准是他等不等于0,而不是等不等于1,楼主记住了哦~
还有就是,如果楼主的意愿是让a=0的时候退出循环,那么就可以按照你写的方法进行,如果楼主的意愿是让a=0的时候才循环,那么有2种写法
while(!a)
{
//对a进行非操作
}
还有就是
while(0==a)
{}
建议写成0== a 的形式,其实0==a,和a==0实质是一样的,但是如果你讲0==a,写成了0=a,那么编译器会报错,而将 a==0写成a=0编译器是不会报错的,可以减少风险。
祝你进步!!

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网