首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Do-While中比较C中的Char

在Do-While中比较C中的Char
EN

Stack Overflow用户
提问于 2020-10-03 05:53:09
回答 3查看 67关注 0票数 1

所以我尝试做一个do-while循环,在用户输入K或M字符时结束。

代码语言:javascript
运行
复制
  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新手,不知道我在比较字符时做错了什么

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-10-03 06:14:34

更改此设置:

代码语言:javascript
运行
复制
while (conversionChoice != "K" || conversionChoice != 'M')

要这样做:

代码语言:javascript
运行
复制
while (conversionChoice != 'K' && conversionChoice != 'M')

这里我将字符K放在单引号中(而不是双引号),因为它是一个字符,而不是字符串-就像您对M所做的那样。

另外,我将||更改为&&,因为您希望在变量is不等于M和不等于K时继续循环。

票数 2
EN

Stack Overflow用户

发布于 2020-10-03 06:12:19

&&替换||。也许其中一个OR操作数将始终为真。

代码语言:javascript
运行
复制
`"K"` should be `'K'` 
票数 0
EN

Stack Overflow用户

发布于 2020-10-03 06:20:20

||代表OR operator。让我们举个例子,如果你给'K‘作为输入,OR操作符将决定conversionChoice != "K"等于true,而conversionChoice != 'M'等于false。

在这种情况下,OR运算符将返回true,因为其中一个表达式为true。

所以你应该使用代表AND运算符的&&

代码语言:javascript
运行
复制
do {....}
while (conversionChoice != "K" && conversionChoice != 'M');
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64178653

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档