C++ while 循环中的重新定义

问题描述 投票:0回答:2

我正在尝试创建一个循环,向用户询问坐标,然后打印这些坐标(如果它们在 [1, 3] 范围内)。如果它们超出范围,则会打印错误消息。如果输入是“q”,则会打印“退出”。

我将 x 和 y 定义为 int,但 'q' 是 char。这种重新定义应该如何进行?

#include <iostream>

using namespace std;

int main()
{
    int x; int y;

    while (true) {
    cout << "Enter coordinates (x, y): ";
    cin >> x >> y;

    if (x >= 1 && x <= 3 && y >= 1 && y <= 3) {
        cout << "Removing " << x << " " << y << endl;
    }
    else if (char x = 'q') {
        cout << "Quitting" << endl;
        break;    
    }
    else cout << "Out of board" << endl;
    }
}
c++ if-statement while-loop char integer
2个回答
0
投票

一种更简单的方法只是要求用户在单独的提示中输入“q”。您要求输入 int:

int x; int y;
cin >> x >> y;

然后检查用户是否输入了字符,即“q”:

else if (char x == 'q') // == for comparison

你可以做的是使用一个临时变量最初将x存储为字符,检查它是否是q,然后继续:

    char tempX;
    cin >> tempX;
    if ( tempX == 'q' ) {
        cout << "Quitting" << endl;
        break;  
    }
    x = tempX - '0'; // for converting tempX to an int.
    cin >> y;

有关字符转换的更多信息,您可以阅读这里


0
投票

主要问题隐藏在这个表达式中:

else if (char x = 'q')

您似乎想将变量 x 转换为

char
类型并检查它是否等于“q”。 首先,如果要转换变量,则需要将类型括在括号中。 其次,您必须使用相等运算符
==
,单个
=
是赋值运算符。

一种可能的解决方案可能如下所示:

else if ((char) x == 'q')
// ...
© www.soinside.com 2019 - 2024. All rights reserved.