#include
int main()y
{int y=10;
while(y--);
printf("y=%d\n",y);}
执行结果是()
http://codepad.org/pAgNAJLu
在线编译器权威验证。
y = -1。当y=0时,退出循环,然后y再减1,等于-1。y++或y--都是先读值,再运算
楼主问题是在于为什么输出的是-1,而不是0么? 还是为很么只打印出一个数?
如果后者的话,那么caozhy的答案正解。
如果前者的话,是因为--y 和 y-- 是不同的,--y你可以理解为while((y-=1)) ,如果y--的话你可以理解为while(y) y-=1;
虽然--y和y--都是y自减1,但是--y返回的是y-1之后的值(y值先-1,然后再参与运算),y--是返回y-1之前的值(先取y的值进行运算,然后在-1)。
执行结果括号里面啥都没有吗
正确结果是y=-1,怀疑你的代码可能while后面不应该有;
这个不会是面试题吧 看你是不是细心 然后对自增自减的理解
while(y--) 先判断y 是否大于0,然后y--;当y=0时,while判断后又执行y--,打印出-1.
while(y--) 先判断y 是否大于0,然后y--;当y=0时,while判断后又执行y--,打印出-1.
while语句后的分号相当于一对空的大括号, 所以打印-1
y--是程序先循环在减一,当y=0时,程序退出循环,之后在减一,就会执行输出语句。如果程序是--y则程序会输出y=0;