如果添加OR条件语句,则此循环不会终止。如果一个是错误的,那么它应该终止。while循环将不会以逻辑条件终止
//全局变量
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);
}
哦..好像我混了起来。谢谢大家澄清! – Dog
请记住'&&'和'||'运营商是所谓的“短路”运营商,如果左侧操作数足以确定结果,则不会评估右侧操作数。结果可能与使用单个'&'或'|'不同当在表达式中执行功能评估时,如这里的情况那样。 (尽管在这种情况下函数会被调用,因为它是第一个操作数)。 –
好吧,通过输入n,如果我使用&& – Dog