所以我尝试做一个do-while循环,在用户输入K或M字符时结束。
char conversionChoice;
do {
printf("Enter K to convert from Kilometer to Miles\n"
"Enter M to convert from Miles to Kilometer\n");
scanf(" %c",&conversionChoice);
}while (conversionChoice != "K" || conversionChoice != 'M');
发生的情况是循环继续运行,如果我输入KM,那么在请求输入之前,它将重复printf两次。我是个C新手,不知道我在比较字符时做错了什么
发布于 2020-10-03 06:14:34
更改此设置:
while (conversionChoice != "K" || conversionChoice != 'M')
要这样做:
while (conversionChoice != 'K' && conversionChoice != 'M')
这里我将字符K
放在单引号中(而不是双引号),因为它是一个字符,而不是字符串-就像您对M
所做的那样。
另外,我将||
更改为&&
,因为您希望在变量is不等于M和不等于K时继续循环。
发布于 2020-10-03 06:12:19
用&&
替换||
。也许其中一个OR
操作数将始终为真。
`"K"` should be `'K'`
发布于 2020-10-03 06:20:20
||
代表OR
operator。让我们举个例子,如果你给'K‘作为输入,OR操作符将决定conversionChoice != "K"
等于true,而conversionChoice != 'M'
等于false。
在这种情况下,OR
运算符将返回true,因为其中一个表达式为true。
所以你应该使用代表AND
运算符的&&
。
do {....}
while (conversionChoice != "K" && conversionChoice != 'M');
https://stackoverflow.com/questions/64178653
复制相似问题