如果语句没有停止执行.C编程

use*_*569 0 c if-statement

我对此非常陌生,我正在尝试创建一个基于文本的扫雷.我希望玩家决定他希望网格有多大.我的问题是,应该确保用户输入1到10之间的数字的if语句不起作用.请看一看.

scanf ("%i/%i",&x,&y);
if (0 < x < 11 && 0 < y < 11)
{   
printf ("you have selected %i by %i\n",x,y);
for (i = 0; i < x; i++) 
    {
    for (j = 0; j < y; j++) 
        {
        grid[x][y] = 'O';
        printf ("%c ", grid[x][y]);
        }
    printf ("\n");
    }
}
else
printf ("Wrong gridsize");
Run Code Online (Sandbox Code Playgroud)

kri*_*iss 6

C不支持双重比较,如:

0 <x <11

你应该写

0 <x && x <11.

这可能会产生误导,因为第一个语句在语法上是正确的(它编译),但它没有做你可能相信的事情:检查两个边界就像在数学表达式中一样(例如python做什么).

这就像你写的那样

(0 <x)<11

第一个二进制表达式返回一个布尔值(嗯,实际上是C中的int,C++中的布尔值).一旦转换为int,该布尔值为0或1,始终低于11,此后表达式始终为true.

当然,检查y边界也是如此.现在你应该能够自己解决问题了.