问题描述
- # 1,解释答案怎样出来的? 2C
-
1,解释答案怎样出来的?
#include
int main()y
{int y=10;
while(y--);
printf(""y=%dn""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;
时间: 2024-11-16 13:06:09