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

[求助]while问题

xbw0114 发布于 2007-10-03 16:55, 1115 次点击
viod main ()
{
int x=1,y=1;
while (x<15) y++;x+=++y;

cout<<x;
cout<<y;
}
为什么输出的结果是16 和7
而不是9和5呀
18 回复
#2
chen78062007-10-03 17:37
这样写程序,应该是一个死循环吧。x永远是1。
#3
xbw01142007-10-03 17:41
不是的,我上机试过 了,输出的是16和7
#4
chen78062007-10-03 17:43
以下是引用xbw0114在2007-10-3 17:41:30的发言:
不是的,我上机试过 了,输出的是16和7

while()后面差了一对大括号。

#5
xbw01142007-10-03 18:30
恩,就是这个,有括号和没括号有什么区别吗?
#6
rediums2007-10-03 18:42

viod main ()
{
int x=1,y=1;
while (x<15) y++;

x+=++y;
cout<<x;
cout<<y;
}

#7
xbw01142007-10-03 19:11
以下是引用chen7806在2007-10-3 17:43:40的发言:

while()后面差了一对大括号。

我想请问下while()后面差了一对大括号,和加上一对大括号有什么区别吗?

#8
Black_smart2007-10-03 19:35

一个死循环....,x永远小于15,所以不会退出while循环,没有加括号表示循环体是while后面的一句,加括号表示循环体是整个括号里面的内容....建议楼主还是先仔细看完书再说吧。。。
修改程序如下:
#include<iostream>
using namespace std;
void main ()
{
int x=1,y=1;
while (x<15)
{
y++;
x+=++y;
}
cout<<x;
cout<<y;
}
结果是16,7

#9
xbw01142007-10-03 19:42
#include <iostream.h>
void main ()
{
int x=1,y=1;
while (x<15) y++,x+=++y;
cout<<x<<endl;
cout<<y<<endl;
}
我把程序修改了以下,不加括号输出结果也是16,7呀?你试试看
#10
chen78062007-10-03 19:43
以下是引用xbw0114在2007-10-3 19:11:41的发言:

我想请问下while()后面差了一对大括号,和加上一对大括号有什么区别吗?

while (x<15)
y++;
x+=++y;


没有括号while()只对y++;发生作用。因为你是复合句,包含x+=++y;所以必须使用大括号。

while(x<15)
{
y++;
x+=++y;
}

#11
xbw01142007-10-03 19:48
以下是引用xbw0114在2007-10-3 19:42:58的发言:
#include <iostream.h>
void main ()
{
int x=1,y=1;
while (x<15) y++,x+=++y;
cout<<x<<endl;
cout<<y<<endl;
}
我把程序修改了以下,不加括号输出结果也是16,7呀?你试试看

#12
csmenglei9512007-10-03 20:35

你那程序怎么会执行出结果来,明显的死循环.while没加括号,只能对下面一行起作用

#13
xbw01142007-10-03 20:38
y++,x+=++y;他们之间是逗号,不是分号,应该是1句
不信你可以运行一下试试
我还想问下为什么输出的结果是16,7而不是9,5 

[此贴子已经被作者于2007-10-3 20:43:22编辑过]

#14
xbw01142007-10-03 22:21
有人知道不?
#15
jbwang2007-10-03 22:52
while(x<15)
{
y++;
x+=++y;
}
加括号后输出结果是16,7。
#16
xbw01142007-10-04 00:15
#17
etherli2007-10-04 13:03

输出的结果当然是16和7了
y++,x+=++y; //y自增两次,最后把y自增的值和x的值相加再赋给X

还有个人觉得逗号运算符没什么大的用处

#18
DieHeart2007-10-05 13:19
我不信你的编译器不能单步运行。自己试一下比较好
int x=1,y=1;
while (x<15) y++,x+=++y;

y;x变化情况
1;1
2,3;4
4,5;9
6,7;16
#19
jack_sqh2007-10-10 16:31
y y x
2 3 4
4 5 9
6 7 16
1