我对此非常陌生,我正在尝试创建一个基于文本的扫雷.我希望玩家决定他希望网格有多大.我的问题是,应该确保用户输入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)
C不支持双重比较,如:
0 <x <11
你应该写
0 <x && x <11.
这可能会产生误导,因为第一个语句在语法上是正确的(它编译),但它没有做你可能相信的事情:检查两个边界就像在数学表达式中一样(例如python做什么).
这就像你写的那样
(0 <x)<11
第一个二进制表达式返回一个布尔值(嗯,实际上是C中的int,C++中的布尔值).一旦转换为int,该布尔值为0或1,始终低于11,此后表达式始终为true.
当然,检查y边界也是如此.现在你应该能够自己解决问题了.