【问题标题】:comparing an input to two characters, creates odd warning将输入与两个字符进行比较,产生奇怪的警告
【发布时间】:2016-09-09 21:03:35
【问题描述】:

我正在尝试将输入与两个不同的字符进行比较,并在满足任何一个条件时执行 if 条件。

到目前为止我的代码是:

if(i == 'Y'||'y') {
        //code here
}

但 GCC 编译器会发出警告:

warning: use of logical '||' with constant operand
      [-Wconstant-logical-operand]

为什么会这样?

【问题讨论】:

  • if(i == 'Y'||'y') 语法无效。你想要if(i == 'Y' || i == 'y')
  • @Tyle Roper,这是有效的语法。它根本没有做 OP 想做的事情。
  • @ikegami 感谢更正。将其留在那里以供将来参考。

标签: c logic


【解决方案1】:

你的意思是:

  if(i == 'Y'|| i == 'y')

编译器会准确地告诉您您需要知道的内容!

【讨论】:

  • 哦!我明白了,编译器正试图整理出一些关于你到底是如何或两个常量相互对抗的乱码。谢谢
【解决方案2】:

如果您不想重复条件(即对于一长串选项),您可以使用:

if (strchr("Yy", i) != NULL) {
    ....
}

你需要#include <string.h>

【讨论】:

  • 如果最后没有终结符,那么i不是一个有效的字符串呢?
  • 为什么需要一个函数调用来代替简单的比较? OP没有问这个。
  • @WeatherVane,正如我所说:如果您不想一次又一次地重复条件,这是有效的
  • 正如我所说,这可能是一个有用的提示,但这不是问题的答案。
  • @MeikVtune: strchr 想要 int 而不是字符串作为第二个参数
猜你喜欢
  • 2010-10-14
  • 2022-11-22
  • 2015-08-29
  • 1970-01-01
  • 2012-05-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多