我希望 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)
注意扩展比较和末尾分号的删除:
(servcode != 'R', 'P')
是有效的 C++,但不会执行您期望的操作;- 分号使语句成为一个空循环体,因此它会一直执行下去,因为循环条件永远不会改变。
关于具有两个不同条件的 C++ do/while 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7823732/