2 qingyangqingyang qingyangqingyang 于 2015.07.08 22:03 提问

# 1,解释答案怎样出来的? 2C

1,解释答案怎样出来的?

#include
int main()y
{int y=10;
while(y--);
printf("y=%d\n",y);}
执行结果是()

10个回答

caozhy
caozhy   Ds   Rxr 2015.07.08 22:12

http://codepad.org/pAgNAJLu
在线编译器权威验证。

frank_20080215
frank_20080215   2015.07.08 22:30

y = -1。当y=0时,退出循环,然后y再减1,等于-1。y++或y--都是先读值,再运算

qq_26369213
qq_26369213   2015.07.08 22:34

楼主问题是在于为什么输出的是-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)。

tabe123
tabe123   Rxr 2015.07.08 23:51

执行结果括号里面啥都没有吗

lzp_lrp
lzp_lrp   Ds   Rxr 2015.07.09 08:35

正确结果是y=-1,怀疑你的代码可能while后面不应该有;

t572015836
t572015836   2015.07.09 11:24

这个不会是面试题吧 看你是不是细心 然后对自增自减的理解

zt110120
zt110120   2015.07.09 14:35

while(y--) 先判断y 是否大于0,然后y--;当y=0时,while判断后又执行y--,打印出-1.

zt110120
zt110120   2015.07.09 14:36

while(y--) 先判断y 是否大于0,然后y--;当y=0时,while判断后又执行y--,打印出-1.

John_ToString
John_ToString   2015.07.10 22:20

while语句后的分号相当于一对空的大括号, 所以打印-1

c250987998
c250987998   2015.07.11 18:38

y--是程序先循环在减一,当y=0时,程序退出循环,之后在减一,就会执行输出语句。如果程序是--y则程序会输出y=0;

Csdn user default icon
上传中...
上传图片
插入图片