If语句不';不要停止执行。C程序设计

If语句不';不要停止执行。C程序设计,c,if-statement,C,If Statement,我对这个很陌生,我正在尝试创建一个基于文本的扫雷器。 我想让球员决定他想要的网格有多大。 我的问题是,if语句应该确保用户输入1到10之间的数字不起作用。请看一看 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++) {

我对这个很陌生,我正在尝试创建一个基于文本的扫雷器。 我想让球员决定他想要的网格有多大。 我的问题是,if语句应该确保用户输入1到10之间的数字不起作用。请看一看

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");
scanf(“%i/%i”、&x和&y);
如果(0
C不支持双重比较,例如:

0 你应该改写

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

就好像你写过一样

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


当然,检查y边界也是如此。现在您应该可以自己解决问题了。

if语句必须如下所示

if ((x > 0 && x < 11) && (y > 0 && y < 11))
if((x>0&&x<11)和(y>0&&y<11))

如果语句写错了
。
这是正确的表格

if ((x > 0 && x < 11) && (y > 0 && y < 11))
C不支持双重比较
0 < x < 11
意味着
(0
scanf ("%i%i",&x,&y);
你的if语句所做的就是你期望做的

if (0 < x < 11 && 0 < y < 11)
if(0
首先输入值x和y(x=4和y=6)

它检查x是否大于0(这是真的),因此用1代替0

现在编译器1<11 接下来,它检查这也是正确的
同样,对于y,无论输入哪个值都将始终为真

谁不支持它。。。如果(9<6==0)printf(“yes”);else printf(“否”);它在语法上是正确的,但它不符合你的信仰。在您的示例中,左比较子返回一个布尔值,第二个比较子将该布尔值与零进行比较。除了?:在C中没有三元运算符。所有其他的都是二元运算符。@Indra Yadav:这是一个关于“支持”这个词的歧义的玩笑,还是你不是一个C程序员?如果不支持,那么上面的代码是如何工作的。。如果你能用C.解释一下双重比较,我会很高兴的。。并解释0if (0 < x < 11 && 0 < y < 11)