Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/134.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ If语句问题_C++_If Statement - Fatal编程技术网

C++ If语句问题

C++ If语句问题,c++,if-statement,C++,If Statement,在得到第二条if语句并获得新的char值后,int number似乎没有被替换。有没有关于我如何更改它的提示,以便在if语句之后char值返回int number if (c < '9' || c > '0') { int number = c - '0'; if (board[number - 1] == 'X' || board[number - 1] == 'O') { cout <

在得到第二条if语句并获得新的char值后,int number似乎没有被替换。有没有关于我如何更改它的提示,以便在if语句之后char值返回int number

 if (c < '9' || c > '0') 
    {
        int number = c - '0';


        if (board[number - 1] == 'X' || board[number - 1] == 'O') 
        {
            cout << "Please enter another Number";
            cin.get(c);
            cin.ignore(numeric_limits<int>::max(), '\n');


        }
        if (board[number - 1] != 'X' || board[number - 1] != 'O' ) 
        {
            if (player == 'X')
            { 
                player = 'O';
            }
            else 
            {
                player = 'X';
            }




            cout << "player " << player <<  " your number is " << number << endl;
            // Your implementation here...



            board[number - 1] = player;

        }


    }

逻辑表达式
c<'9'| c>'0'
board[number-1]!='X'| |板[编号-1]!='O'
总是正确的。它们是重言式。这可能意味着他们没有实现您打算实现的内容。你必须复习这些表达。实际上,您编写的代码没有什么意义。

逻辑表达式
c'0'
board[number-1]!='X'| |板[编号-1]!='O'
总是正确的。它们是重言式。这可能意味着他们没有实现您打算实现的内容。你必须复习这些表达。实际上,您编写的代码没有什么意义。

变量“number”没有被替换,因为在“if”语句之后您没有给它赋值。从cin读取另一个字符后,您需要重新分配到“number”。事实上,最好的方法可能是循环,直到用户进入一个未填充的正方形,而不是进行一次if检查,以查看电路板中的该点是否未被占用:

    while (board[number - 1] == 'X' || board[number - 1] == 'O') // loop until valid
    {
        cout << "Please enter another Number";
        cin.get(c);
        cin.ignore(numeric_limits<int>::max(), '\n');
        number = c - '0'; // update array index

    }
while(板[number-1]='X'| |板[number-1]='O')//循环直到有效
{

cout变量'number'不会被替换,因为在'if'语句之后您没有为它赋值。在从cin读取另一个字符后,您需要重新赋值到'number'。事实上,最好是循环,而不是进行一次if检查,以查看电路板中的该点是否未被占用,直到用户输入未填充d广场:

    while (board[number - 1] == 'X' || board[number - 1] == 'O') // loop until valid
    {
        cout << "Please enter another Number";
        cin.get(c);
        cin.ignore(numeric_limits<int>::max(), '\n');
        number = c - '0'; // update array index

    }
while(板[number-1]='X'| |板[number-1]='O')//循环直到有效
{

cout board[number-1]!='X'| | board[number-1]!='O'当它被填充时不是假的吗?board[number-1]不能同时是'X'和'O'。它总是不等于至少一个或另一个。“| |”当然意味着or,如果or的任何一边都是真的(因为它不相等),整体表达式为真。其中一方或另一方始终为真。@user868756:I,or(
|
)是包含的,而不是独占的。如果是X,那么(不是X或不是O)是真的,因为它不是O。如果是O,那么测试通过,因为它不是X。请仔细学习。board[number-1]!=“X'| board[number-1]!='O'填充时不是假的吗?board[number-1]不能同时是'X'和'O'。它总是不等于一个或另一个。“| |”当然意味着或,如果或的任何一边为真(因为它不相等),则整个表达式都为真。并且一边或另一边总是为真。@user868756:I.e.,or(
|
)是包容的,而不是排他性的。如果它是X,那么(它不是X或它不是O)是真的,因为它不是O。如果它是O,那么测试通过了,因为它不是X。请仔细研究。回答好!非常感谢!回答好!非常感谢!