具有两个不同条件的 C++ do/while 循环

标签 c++

我希望 do while 循环检查输入的输入是否为 R OR P。我认为它正在检查两者以及何时到达该部分当我运行时,它会暂停一分钟,然后我得到“超出 CPU 限制(核心已转储)”。在另一个相关说明中,我是否有破坏某些东西的危险?

/************************************************/
/* Name: servcode                               */
/* Description: Get service type                */
/* Parameters: N/A                              */
/* Return Value: servcode                       */
/************************************************/

char servcode()
{
  char servcode = 'a';   // Define variable for service code
  char serviceyn = 'n';  // Define variable for user verify
  int i = 1;             // Define variable for sentinel loop

  do {
    cout << "\n" << "\n" << "Please enter your service code, [R]egular or [P]remium: " << "\n";
    cin >> servcode;
    while ((servcode != 'R', 'P') && (i < 3));
    {
        cout << "\n" << "Error - invalid service code, please try again.";
        cout << "\n" << "Please enter your service code: ";
        cin >> servcode;
        i++;
        if (i == 3)
        {
            cout << "\n" << "Too many invalid attempts, program terminating." << "\n"
             << "Have a nice day. " << "\n" << "\n";
            exit (0);
        } //end if
    } //end while
    cout << "\n" << "You entered: " << servcode << "\n"
     << "Is that correct? [y,n]";
    cin >> serviceyn;
  } while (serviceyn != 'y'); // end do/while loop

  return servcode;
}

最佳答案

正确的语法是:

while (servcode != 'R' && servcode != 'P' && i < 3)

注意扩展比较和末尾分号的删除:

  1. (servcode != 'R', 'P') 是有效的 C++,但不会执行您期望的操作;
  2. 分号使语句成为一个空循环体,因此它会一直执行下去,因为循环条件永远不会改变。

关于具有两个不同条件的 C++ do/while 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7823732/

相关文章:

c++ - 从可连接的线程中销毁线程的对象

c++ - 如何在 Qt QML 中退出 C++ 应用程序

c++ - 从 C++ 中的列表中删除项目

c++ - 尝试打开管道进行读取时 open() 阻塞

c++ - 分配自身的类型的分配器

c++ - 如何将随机数组值一起添加到另一个数组中,然后在计算出现的值的同时显示它们? C++

c++ - 通过 Makefile 的预处理器宏定义在 C++ 中无法正常工作

C++:读取由 ; 分隔的 CSV 文件与\n

c++ - 通过 BST 进行中缀、前缀或后缀排序以获得打印元素的降序

c++ - 计算出多少客户端可以连接到我正在使用的某些tcp服务器代码