标题:编程新手求指教。
取消只看楼主
DirtyAss
Rank: 1
等 级:新手上路
帖 子:11
专家分:2
注 册:2011-11-25
结帖率:100%
已结贴  问题点数:20 回复次数:4 
编程新手求指教。
我编了一个输出10-0的自然数递减程序,但是我发现一个问题当我的程序如下:
#include<iostream>
int main()
{
    int val=10;
    while(val>0){
                  std::cout<<val<<"\t";
                  --val;}
    system("PAUSE");
    return 0;
}
输出结果为:10 9 8 7 6 5 4 3 2 1 0
但是当我写成这样时:
#include<iostream>
int main()
{
    int val=10;
    while(val>=0){
                  std::cout<<val<<"\t";
                  --val;}
    system("PAUSE");
    return 0;
}
输出结果为:10 9 8...0 -1
请问为什么会这样呢,while条件不是当大于或等于0时就结束了吗,怎么还会出现-1。


当我用for语句时,条件设定为(int val=10;val>=0;--val)输出10-0的递减,当(int val=10;val>0;--val)输出的是10-1的递减。
这样的话for 语句跟while 语句的测定条件一样但输出结果却不同。感到很困惑。


[ 本帖最后由 DirtyAss 于 2011-11-25 18:57 编辑 ]
搜索更多相关主题的帖子: 编程 include system return 自然数 
2011-11-25 18:44
DirtyAss
Rank: 1
等 级:新手上路
帖 子:11
专家分:2
注 册:2011-11-25
得分:0 
回复 2楼 hxcet
第一个问题我弄明白了,因为当val>=0时,val=0时whlie还会循环一次,所以就有了-1。我用的是dev这个编的。

[ 本帖最后由 DirtyAss 于 2011-11-25 20:04 编辑 ]
2011-11-25 20:00
DirtyAss
Rank: 1
等 级:新手上路
帖 子:11
专家分:2
注 册:2011-11-25
得分:0 
回复 4楼 hxcet
不会啊,while是测条件的真假,因为val>=0为真,所以当val=0时,条件依然为真,所以会继续执行一次 --val,于是得出了-1。是不是你的编译有误?
2011-11-25 20:34
DirtyAss
Rank: 1
等 级:新手上路
帖 子:11
专家分:2
注 册:2011-11-25
得分:0 
认真看才发现我原来错了,之前把--val写在std::cout<<val<<"\t";之上了,所以才会出现-1
2011-11-25 20:49
DirtyAss
Rank: 1
等 级:新手上路
帖 子:11
专家分:2
注 册:2011-11-25
得分:0 
回复 10楼 hxcet
不用了,这些软件下载途径很多,而且现在我时学一些入门的东西,dev应经很够用了,而且简单小巧。不过还是谢谢你。
2011-11-25 21:03



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-356226-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.178933 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved