while 循环不会以逻辑条件终止

2023-12-21

如果我添加 OR 条件语句,该循环将不会终止。如果其中一个为假,那么它应该终止。

//全局变量

int x = 100;
    char *n= malloc (64);

void add(void)
{       

    do      
    {
        printf("Would you like to add 1? (y/n) ");
        fgets(n, 64, stdin);
            //removes newline
        n[strlen(n)-1] = '\0';
            x++;
    }       
//if I add || (x!=100) it keeps looping me even if I press "n"
//otherwise without it it works fine

        while((strncmp(n, "n", 1) != 0) || x!=100 );

        free(n);
}

在循环的底部,你正在做x++。一旦达到 while 条件,x == 101,所以你的循环永远不会终止,x检查条件时永远不会等于 100。

也许你想要:

while((strncmp(n, "n", 1) != 0) && x != 100);

如果两个条件中的任何一个为假,则循环将终止。

&&是“逻辑与”运算符,||是“逻辑或”运算符。为了帮助您跟踪,您可以使用真值表 http://en.wikipedia.org/wiki/Truth_table帮助您理清细节。逻辑and 与逻辑合取相同,逻辑or 与逻辑或取相同。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

while 循环不会以逻辑条件终止 的相关文章

随机推荐