为什么我的while循环结束?

时间:2014-01-07 15:52:19

标签: c++ loops while-loop return response

无论我放Y还是N,我的节目在我回答“更多的肉?”之后结束了。我期待它将响应返回给循环。

#include <iostream>
using namespace std;
int main()
{
    char response = 'y';
    double price;
    double total = 0;
    while (response == 'Y' || 'y') {

        cout << "Please enter price of meat: ";
        cin >> price;

        total += price;

        cout << "More meat? (Y/N)";
        cin >> response;
        return response;
    }
    cout << "Your total is: " << total;

    return 0;

}

2 个答案:

答案 0 :(得分:7)

while (response == 'Y' || 'y') {

应该是

while (response == 'Y' || response ==  'y') {

另外

return response;

退出整个函数(main)。你不需要它。


  

我期待它将响应返回到循环

您不需要(return用于从函数返回值,终止其执行)。因此,在循环的}之后,下一个执行的行将是while ( condition ) ...。如果condition被评估为false,则循环将停止,下一个执行的行将是循环}之后的那一行。

答案 1 :(得分:2)

您的缩进内容已被破坏,您的while()测试也是如此,并且您有一个虚假的return声明:

#include <iostream>
using namespace std;
int main()
{

    char response = 'y';
    double price;
    double total = 0;
    while (response == 'Y' || response == 'y') {

        cout << "Please enter price of meat: ";
        cin >> price;

        total += price;

        cout << "More meat? (Y/N)";
        cin >> response;
    } // end while
    cout << "Your total is: " << total;

    return 0;
} // end main()

(使用do ... while()会稍微整理一下,您也不需要将response初始化为'y')。