问题描述
- while(y--)是什么意思 求大神解答 谢谢
-
#include
#includeint main()
{
int y=10;
while(y--);
printf("y=%dn",y);
return 0;
}
为什么它的结果是y=-1呢
解决方案
y是整型变量,在C语言中,整型变量也可以当做逻辑值处理,非0为真,0为假。while(y--);语句中注意后面的“;”,意思是当y--表达式为非0时循环继续,否则循环结束,最后y--表达式是先判断再减1
解决方案二:
后置的--运算符你可以认为是一个函数,其能够改变参数的值,他能使入参减1,但是返回值却是参数本身的大小,当然,在C中写不出这样的一个函数,C++可以如下
int fun(int &arg)
{
int tmp = arg;
arg = arg - 1;
return tmp;
}
当 y-- 等于0退出循环,此时 y 值为-1
另外可以这样思考,while(y--)等价于 while(y) y = y - 1;
因此最后 y = -1;
解决方案三:
while是先判断y等于0时,退出循环,但是y--后面有个自减,所以y就变成-1了
解决方案四:
改成下面的代码,看效果
while(y--)
{
printf("y=%dn",y);
}
解决方案五:
当y为0跳出循环且跳出循环后y-1,即为-1。
解决方案六:
同上,在C和C++中,非0为真,0为假,可以当作boolean类型来用,但是在JAVA中就不可以,整型就是整型,不可当作boolean来用,要注意
解决方案七:
--在后,先赋值运算在减1,--在前,先减在赋值运算
时间: 2024-09-13 00:27:14