黑马程序员技术交流社区
标题:
判断程序的输出的结果?!
[打印本页]
作者:
刘圣涛
时间:
2014-7-11 00:38
标题:
判断程序的输出的结果?!
之前做的一道题目,貌似结果是输出是2 0,不过现在思路有点混乱,有哪位大神能帮忙详细解答一下?
int main()
{ int n=4;
while (n--)
printf(〞%d〞,--n);
}
作者:
fantacyleo
时间:
2014-7-11 00:44
本帖最后由 fantacyleo 于 2014-7-11 00:46 编辑
n--和--n最关键的是分清变量的值和表达式的值。无论--在前还是在后,执行完后变量的值一定都减了1。但是,表达式的值是不同的:n--这个表达式的值是n减1之前的值,--n这个表达式的值是n-1之后的值
作者:
骑着飞机去看海
时间:
2014-7-11 00:44
//main()
//{
// int n=4; 第一轮 第二轮 第三轮
// while (n--) 4 n = 3 2 n = 1 0 循环退出
// printf(〞%d〞,--n)输出: 2 n = 2 输出:0 n = 0
// }
复制代码
作者:
丶白菜你个小番
时间:
2014-7-11 09:39
首先n--的表达式值为n,然后n-1,--n的表达式值为n-1;又每次判断和输出n都会-1,所以此while循环只执行2次,第一次判断后n=3,输出是--n,所以打印出2出来,n的值为2;第二次判断后n=1,输出是--n,所以打印出0,n的值为0
作者:
zhs
时间:
2014-7-11 10:34
本帖最后由 zhs 于 2014-7-11 11:28 编辑
此代码的执行步骤为:
第一步:n先运算即while判断n为4成立(注意:此时不会直接进入循环,因为n--表达式还没有执行结束),而后紧跟着会n自减1后表达式结束,这时才进入循环。
第二步:进入循环后输出时执行--n,先自减,此时n变为2,随后执行输出语句n=2输出。
输出结果0思路同上,楼主可以自己过一遍。
作者:
楠瓜果
时间:
2014-7-11 14:05
这是一个先减和后减的问题,第一次运行,n是后减,所以当while循环的时候,n已经减1变成3,打印的时候,是先减后打印,所以先打印2,如果减号放在n的后面,那就是先打印3,循环的时候再减。再次循环的时候,当while中n的值为2,满足,继续运行,此是n已经变成了1,然后打印的时候再减一次,所以就变成了0;
作者:
Devchen
时间:
2014-7-11 16:24
2 0;n = 4; n--时,先将n=4代表n--参与判断,之后将n减1(为3);printf中--n,先将n减去1(为2),之后n代表--n输出。
作者:
愿望
时间:
2014-7-11 17:42
本帖最后由 愿望 于 2014-7-11 17:43 编辑
我自己的话,来说, 不知道你能不能理解,
运行到while的时候,n还是4, 但是经过n--就变成3 . 3就来到了 printf里, "--n"是先减之后再赋值, 减了变成2,这就输出了一个2 ;
2再回来while里, 一样,经过 n--就变成1 , 成立, 1 又来到了printf里, 再被--n一运行, 就变成了0 , 于是输出了0
0再回去 while的条件就不成立了. over
主要明白后面的--n是要先减再printf这个地方, 就明白了!
希望你看的明白.....:)
作者:
幕夏
时间:
2014-7-11 23:43
细化一下你的代码这个你应该看懂了
int main()
{ int n=4;
while (n!=0)
n--;
--n;
printf(〞%d〞,n);
}
复制代码
作者:
Bugist
时间:
2014-7-12 00:51
C语言基本已忘光
作者:
云霄之上
时间:
2014-7-12 14:48
这个程序的思路是这样的:while循环语句 先从4开始 whil(4--)此时因为4--也就是4!=0进入循环体输出--n也就是输出此时的n也就是4
作者:
小海
时间:
2014-7-12 16:16
关键要分清判断时与判断后n的值,第一轮:判断时,n=4,判断后,n=3,打印时:n=2,
第二轮,判断时:n=2,判断后:n=1,打印时:n=0;
第三轮,判断时,n=0,循环结束
作者:
刘圣涛
时间:
2014-7-12 22:36
谢谢大家的回答
作者:
mybdgw
时间:
2014-7-12 22:52
int main()
{ int n=4;
while (n--) //先判断n的值是否为0,不为0就往下走 第一次n=4 到printf之前n--变为3
printf(〞%d〞,--n);//先减1再输出 n变为2 如此循环最终结果为: 2,0
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2