for循环条件为假,为什么会进行循环

入门级c语言,只学过几个基础函数,自定义函数,for,while循环怎么解决下面问题

long it (int n);
int main(void)
{
    int m,j;
    int i=1;
    long re;
    
    while(i==1)
    {
        printf("Pleast enter a number (q to quit):");
        i = (scanf("%d",&m)==1);
        //printf("%d\n",i);
        for (j = 0; i == 1, j !=1; ++j);
        {
            re=it(m);
            printf("It's square is %ld\n",re);
        }
    }
    printf("Thank you for your test!\n");
    return 0;
}

long it (int n)
{
    double r = 1;
    int x;
    x =n*n;
    r = x;
    return r;
}```

输入几个数字回车之后结果没有问题,但是打印q的时候for循环仍然会再次打印一遍,可是输入q之后,i不是已经等于0了吗,循环条件为假,不应该跳出循环吗,但是它仍然会又打印一遍for循环中的printf。怎么操作,求解

你这个就是输入一个数,然后输出平方吧,把i改成条件语句,j的循环也不要了

for (j = 0; i == 1, j !=1; ++j);

这句代码后面有个分号,导致for循环结束,下面大括号中的代码百分百执行。
还有,for语句中,中间最好不要用“,”运算符,会有问题。
希望对你有所帮助~

【以下回答由 GPT 生成】

问题的原因是在for循环的循环条件中,使用了逗号运算符来连接两个条件表达式。逗号运算符会先计算左边的表达式,然后忽略其结果,再计算右边的表达式。因此,即使左边的条件i==1为假,右边的条件j!=1仍然会执行。

为了解决这个问题,你可以将两个条件用逻辑与运算符&&连接起来,这样只有当两个条件都为真时,循环才会执行。修改代码如下:

#include <stdio.h>

long it(int n);

int main(void)
{
    int m, j;
    int i = 1;
    long re;

    while (i == 1)
    {
        printf("Please enter a number (q to quit):");
        i = (scanf("%d", &m) == 1);

        for (j = 0; i == 1 && j != 1; ++j)
        {
            re = it(m);
            printf("It's square is %ld\n", re);
        }
    }

    printf("Thank you for your test!\n");
    return 0;
}

long it(int n)
{
    double r = 1;
    int x;
    x = n * n;
    r = x;
    return r;
}

修改后的代码使用逻辑与运算符来连接循环条件,确保只有当输入的字符不为"q"且j不等于1时,for循环才会执行。这样,当输入"q"时,循环条件为假,程序会跳出循环,并打印"Thank you for your test!"。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^