| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1259 人关注过本帖
标题:编程新手求指教。
只看楼主 加入收藏
DirtyAss
Rank: 1
等 级:新手上路
帖 子:11
专家分:2
注 册:2011-11-25
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:14 
编程新手求指教。
我编了一个输出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
hxcet
Rank: 4
等 级:业余侠客
帖 子:78
专家分:229
注 册:2011-11-15
收藏
得分:10 
你这个程序在我这里没错啊,第一个输出的是10 9 8 7 6 5 4 3 2 1,第二个输出是10 9 8 7 6 5 4 3 2 1 0.。。。。。
看你的程序也没错啊。。。你用的哪款软件啊
2011-11-25 19:37
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
hxcet
Rank: 4
等 级:业余侠客
帖 子:78
专家分:229
注 册:2011-11-15
收藏
得分:0 
回复 3楼 DirtyAss
val>=0为条件时,即便val=0时,输出也应该是0,不会输出-1啊。。可能是不同软件对while的理解问题,我用的VC,输出结果就跟你的完全不同。。。
2011-11-25 20:12
飞扬_佳
Rank: 2
等 级:论坛游民
帖 子:19
专家分:20
注 册:2011-4-14
收藏
得分:0 
回复 4楼 hxcet
楼上的,能不能告诉我哪里可以下载VC呀,我以前下的安装不成功呀,就把它给删了,谢谢啦
2011-11-25 20:29
hxcet
Rank: 4
等 级:业余侠客
帖 子:78
专家分:229
注 册:2011-11-15
收藏
得分:0 
回复 5楼 飞扬_佳
你给个邮箱我给你传
2011-11-25 20:31
DirtyAss
Rank: 1
等 级:新手上路
帖 子:11
专家分:2
注 册:2011-11-25
收藏
得分:0 
回复 4楼 hxcet
不会啊,while是测条件的真假,因为val>=0为真,所以当val=0时,条件依然为真,所以会继续执行一次 --val,于是得出了-1。是不是你的编译有误?
2011-11-25 20:34
hxcet
Rank: 4
等 级:业余侠客
帖 子:78
专家分:229
注 册:2011-11-15
收藏
得分:10 
回复 7楼 DirtyAss
最后执行得到的-1是应该是不会输出的吧。。。val=0时执行输出语句输出val为0,然后再执行--val,此时val才=-1,然后重新进入循环判断val是否>=0,判断为假,循环结束,所以应该是输出到0吧。
--val是在输出val之后的啊

[ 本帖最后由 hxcet 于 2011-11-25 20:44 编辑 ]
2011-11-25 20:38
DirtyAss
Rank: 1
等 级:新手上路
帖 子:11
专家分:2
注 册:2011-11-25
收藏
得分:0 
认真看才发现我原来错了,之前把--val写在std::cout<<val<<"\t";之上了,所以才会出现-1
2011-11-25 20:49
hxcet
Rank: 4
等 级:业余侠客
帖 子:78
专家分:229
注 册:2011-11-15
收藏
得分:0 
回复 9楼 DirtyAss
呵呵,没事,以后还可以多多探讨问题哈,你给个邮箱我可以给你传VC++

[ 本帖最后由 hxcet 于 2011-11-25 20:56 编辑 ]
2011-11-25 20:54
快速回复:编程新手求指教。
数据加载中...
 
   



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

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