函数不会停止循环

C++: function wont stop looping

本文关键字:循环 函数      更新时间:2023-10-16

此函数的目的是要求用户输入要添加到订单中的数量。如果他们输入的值小于0,函数将要求他们重新输入info,如果他们输入0,则退出函数。如果值是正整数,则接受用户输入,修改数据成员,并返回true。如果用户输入0,函数返回false。问题是,无论用户输入什么,程序都不会退出。0、小于0的值和一个有效的正整数都会导致函数循环并要求用户再次输入信息。有人能指出这个函数中的逻辑有什么问题来解释为什么会发生这种情况吗?

 bool Order::add(std::istream& is) {
        int quantity;
        bool start = true;
        bool val = false;
        while (start = true) {
            std::cout << "Enter quantity (0 to quit): ";
            is >> quantity;
            if (quantity == 0) {
                std::cout << "**No delivery recorded!" << std::endl;
                start = false;
            }
            else if (quantity < 0) {
                std::cout << "quantity must be a positive integer" << std::endl;
            }
            else {
                copies += quantity;
                start = false;
                val = true;
            }
        }
        return val;
    }

你总是将"start"变量赋值为true:修改while循环(==):

 while (start == true) {