类型'const char [35]'和'double'类型的无效操作数为二进制'operator +'

时间:2018-08-15 09:02:10

标签: arduino-uno

我在arduino中的字符串有问题。我知道我不能将这样的不同类型放在一起。我已经尝试了几次转换,但没有成功。

下面的行是我收到的消息:“类型为'const char [35]'和'double'的无效操作数为二进制'operator +'”

sendString("Time: " + (micros () - PingTimer) * 0.001, 3 + " ms");

1 个答案:

答案 0 :(得分:0)

免责声明: This question非常相似,但是在不同的堆栈交换站点上(答案是可疑的)。


问题可以简化为以下片段:

void setup() {
  "hello" + 3.0;
}

它会产生以下错误消息:

error: invalid operands of types 'const char [6]' and 'double' to binary 'operator+'

许多编程语言都支持将字符序列“加在一起”,而C ++不支持。这意味着您将需要使用一个代表字符序列并实现+运算符的类。

幸运的是,您已经可以使用这样的类:String。示例:

void setup() {
  String("hello") + 3.0;
}

表达式是从左到右求值的,这意味着最左边的类型必须是String,换句话说:

String("a") + 1 + 2 + 3

被理解为:

((String("a") + 1) + 2) + 3

String("a") + 1是字符串,因此(String("a") + 1) + 2是字符串,依此类推...