while 的用法

来源:互联网 发布:人工智能 西蒙 编辑:程序博客网 时间:2024/05/21 07:09

while以前经常遇到,没有注意有什么特别的,今天遇到一个程序,一开始竟然没能反应过来。

程序是这样的:

int main()
{
int val, sum = 0;
cout << "Enter the number:";
while (cin >> val)
{
sum += val;
cout << "Enter next number:";
}
cout << "Sum of all values:" << sum << endl;
return 0;

}

一直输入val 的值,3,2,5,觉得差不多了,就想输入0结束程序,但是程序并没有结束,自己很不解,不是while条件中为0就跳出循环吗?后来再想是不是false才是退出条件,自己就尝试了一下,结果真的退出了。不过辛亏自己没高兴的过头,自己尝试了输入true,也退出了,自己又随便输入字母ll,还是退出了,这到底是什么情况了?难道是输入字母就退出,输入数字就一直循环?

再查一下while的语义:计算表达式的值,当值为真(非0)时, 执行循环体语句。那这边就是考虑表达式“cin >> val”的值是否为真,val已经声明为int类型,如果输入是数字,那么表达式就是真;相反,如果输入的不是数字,表达的值就为非真(0),也就退出循环了。

这个例子对于要求对输入的数字求和是一个很好的例子,退出机制就设在了while的条件里,也算是对while的一次灵活应用。


最后再看几个常见的while例子吧:

1)while(i < 10){ sum += i, i++}

2)  while(getchar() != '\n'){……}

3)while (n --) {}      //当n减到0时循环结束


原创粉丝点击