C++ C++;即使不满足条件,循环也会终止
我希望程序不断请求值进行计算,直到标志为true,然后程序必须停止,但它只执行一次。我不知道我是否正确地使用了char,或者是否有更好的方法使用标志来执行这些类型的while循环。任何帮助都很好。[在此处输入图像描述][1]C++ C++;即使不满足条件,循环也会终止,c++,while-loop,C++,While Loop,我希望程序不断请求值进行计算,直到标志为true,然后程序必须停止,但它只执行一次。我不知道我是否正确地使用了char,或者是否有更好的方法使用标志来执行这些类型的while循环。任何帮助都很好。[在此处输入图像描述][1] int main() { displayMenu(); bool flag = false; while(!flag) { int choice = 0; int val1 = 0; int val2 = 0; int ans
int main()
{
displayMenu();
bool flag = false;
while(!flag)
{
int choice = 0; int val1 = 0; int val2 = 0; int ans = 0;
cout << "Enter your choice (1-5): ";
cin >> choice;
cout << "\nEnter integer 1: ";
cin >> val1;
cout << "\nEnter integer 2: ";
cin >> val2;
if(choice < 0 || choice > 5)
{
cout << "\nEnter a choice between 1-5: ";
cin >> choice;
}
if (choice == 1)
{
ans = Add(val1,val2);
cout << "\nResult: " << ans << endl;
}
if (choice == 2)
{
ans = Subtract(val1,val2);
cout << "\nResult: " << ans << endl;
}
if (choice == 3)
{
ans = Multiply(val1,val2);
cout << "\nResult: " << ans << endl;
}
if (choice == 4)
{
ans = Divide(val1,val2);
cout << "\nResult: " << ans << endl;
}
if (choice == 5)
{
ans = Modulus(val1,val2);
cout << "\nResult: " << ans << endl;
}
char c_flag[] = "n";
cout << "Press Y or y to continue: ";
cin >> c_flag;
if(c_flag == "y" || c_flag == "Y")
{
flag = false;
}
else
{
flag = true;
}
}
return 0;
}
intmain()
{
显示菜单();
布尔标志=假;
while(!flag)
{
int-choice=0;int-val1=0;int-val2=0;int-ans=0;
选择;
cout>val1;
cout>val2;
如果(选项<0 | |选项>5)
{
选择;
}
如果(选项==1)
{
ans=添加(val1,val2);
cout对于数据类型char c_flag[]
,条件c_flag==“y”
很可能永远不会满足,因为您正在比较两个(不同)指针值,而不是它们的内容
改用std::string c_flag
,至少您的条件应该按预期工作
你也可以写
char c_flag[] = "y";
...
if (strcmp(c_flag,"y")==0) ...
但是我更喜欢std::string
-变量,原因如下:使用char c_flag[]=“y”
,您可以分配一个大小为2的数组(包括字符串终止字符);使用cin>>c_标志
,如果输入多个字符,将超过数组长度并产生未定义的行为。相反,使用std::string
,变量将在必要时“增长”。c_标志==“y”
--C风格的字符串比较不是这样工作的。请改用std::string
或strncmp
来代替。使用-Wall
和可能的-Wextra
进行编译。我相信GCC应该警告您正在做的事情。@jww无论编译器是否特别警告,启用更多警告始终是一个问题好主意。