如果我添加 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(使用前将#替换为@)