注册 登录
编程论坛 C++教室

编程新手求指教。

DirtyAss 发布于 2011-11-25 18:44, 1259 次点击
我编了一个输出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 编辑 ]
14 回复
#2
hxcet2011-11-25 19:37
你这个程序在我这里没错啊,第一个输出的是10 9 8 7 6 5 4 3 2 1,第二个输出是10 9 8 7 6 5 4 3 2 1 0.。。。。。
看你的程序也没错啊。。。你用的哪款软件啊
#3
DirtyAss2011-11-25 20:00
回复 2楼 hxcet
第一个问题我弄明白了,因为当val>=0时,val=0时whlie还会循环一次,所以就有了-1。我用的是dev这个编的。

[ 本帖最后由 DirtyAss 于 2011-11-25 20:04 编辑 ]
#4
hxcet2011-11-25 20:12
回复 3楼 DirtyAss
val>=0为条件时,即便val=0时,输出也应该是0,不会输出-1啊。。可能是不同软件对while的理解问题,我用的VC,输出结果就跟你的完全不同。。。
#5
飞扬_佳2011-11-25 20:29
回复 4楼 hxcet
楼上的,能不能告诉我哪里可以下载VC呀,我以前下的安装不成功呀,就把它给删了,谢谢啦
#6
hxcet2011-11-25 20:31
回复 5楼 飞扬_佳
你给个邮箱我给你传
#7
DirtyAss2011-11-25 20:34
回复 4楼 hxcet
不会啊,while是测条件的真假,因为val>=0为真,所以当val=0时,条件依然为真,所以会继续执行一次 --val,于是得出了-1。是不是你的编译有误?
#8
hxcet2011-11-25 20:38
回复 7楼 DirtyAss
最后执行得到的-1是应该是不会输出的吧。。。val=0时执行输出语句输出val为0,然后再执行--val,此时val才=-1,然后重新进入循环判断val是否>=0,判断为假,循环结束,所以应该是输出到0吧。
--val是在输出val之后的啊

[ 本帖最后由 hxcet 于 2011-11-25 20:44 编辑 ]
#9
DirtyAss2011-11-25 20:49
认真看才发现我原来错了,之前把--val写在std::cout<<val<<"\t";之上了,所以才会出现-1
#10
hxcet2011-11-25 20:54
回复 9楼 DirtyAss
呵呵,没事,以后还可以多多探讨问题哈,你给个邮箱我可以给你传VC++

[ 本帖最后由 hxcet 于 2011-11-25 20:56 编辑 ]
#11
DirtyAss2011-11-25 21:03
回复 10楼 hxcet
不用了,这些软件下载途径很多,而且现在我时学一些入门的东西,dev应经很够用了,而且简单小巧。不过还是谢谢你。
#12
hxcet2011-11-25 21:25
回复 11楼 DirtyAss
呵呵,不谢
#13
appsepvyp2011-11-26 13:00
新手支持下
#14
飞扬_佳2011-12-02 17:49
谢谢楼上的
#15
悠嘻猴2011-12-05 14:27
回复 10楼 hxcet
能给我传下vc++  么 ?   谢了本人刚刚接触c语言,邮箱13663544678@
1