【问题标题】:C++ compare a byte to a letterC++ 比较一个字节和一个字母
【发布时间】:2012-11-06 18:59:16
【问题描述】:

我有串行数据,我想将特定字节与字母“G”进行比较。

LPtype 是从串口读取的字节。

if (LPtype == "G")
{
    doThis();
}

我收到以下错误:

C++禁止指针和整数比较

将传入的再见与字母 G 进行比较的正确方法是什么? (或与此相关的任何其他信件)

【问题讨论】:

  • 让我们看看LPtype的类型。
  • LPtype is a byte 是吗?真的吗?似乎是一个奇怪的字节名称。
  • LPtype 的任何类型是否都有operator==(const char *)?如果是这样,它会在这里做你想做的事吗?

标签: c++ compare byte


【解决方案1】:
LPtype == 'G'

单引号。但是 LP 通常会在指针类型前加上前缀,在这种情况下你应该取消引用它

*LPtype == 'G'

但如果你确定 LPtype 确实是一个字节值,那么

LPtype == 'G' 

应该可以。问题是"G" 的类型是const char[2],不是整数类型,而'G' 的类型是char,是整数类型

【讨论】:

  • 我不认为鼓励 OP 疯狂猜测是一件特别负责任的事情,Armen,即使你只是通过自己疯狂猜测来暗示这样做;)
  • "但是 LP 通常会在指针类型前加上前缀,在这种情况下你应该取消引用它:*LPtype == 'G'" - 在这种情况下,编译器不会抱怨整数和指针比较...跨度>
  • 这是引号,谢谢,我没有做过很多 C++,主要是 VB,所以我犯了很多错误。至于 LPtype ,我正在投票,LP 是 Last Poll ,而 type 是投票的类型,不知道会导致问题
【解决方案2】:

你可以这样做:

  LPtype == 'G'

【讨论】:

    猜你喜欢
    • 2018-07-11
    • 1970-01-01
    • 2018-03-12
    • 2016-03-15
    • 1970-01-01
    • 1970-01-01
    • 2016-05-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多