Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arduino 为什么我会得到;无效操作数类型";在一个场合,而不是在另一个类似的场合?_Arduino - Fatal编程技术网

Arduino 为什么我会得到;无效操作数类型";在一个场合,而不是在另一个类似的场合?

Arduino 为什么我会得到;无效操作数类型";在一个场合,而不是在另一个类似的场合?,arduino,Arduino,我有两个字符串,第一个串接如下: dataString = String(dates + "," + times + "," + temp[0] + "," + hum[0] + "," + temp[1] + "," + hum[1] + "," + temp[2] + "," + hum[2] +

我有两个字符串,第一个串接如下:

  dataString = String(dates + "," + times + "," + temp[0] + "," + hum[0] + "," +
                      temp[1] + "," + hum[1] + "," + temp[2] + "," + hum[2] +
                      "," + temp[3] + "," + hum[3]);
另一个:

dataLog = String("," + airTemp[1] + "," + hum[1] + "," + floorTemp[1]);
日期、时间是字符串;嗡嗡声、温度、空气温度和地板温度都是浮标

我对第一个没有问题,但对于第二个,我总是收到以下错误消息:

error: invalid operands of types 'const char [2]' and 'float' to binary 'operator+'
但是,如果我使用
String()
来转换浮点数,它就可以正常工作。但是再一次,我不必将第一个浮点数转换成字符串


我的问题通过使用String()解决了,但为什么会发生这种情况?

在第一种情况下,日期是字符串。有一些函数可以添加字符串和浮点。在第二种情况下,两者都不是字符串,因此没有+函数来添加它们。在小型微控制器上使用字符串,特别是过度使用+运算符,会导致堆碎片和随机崩溃。通常最好避免使用它。@Delta_G那么,可以使用String(String+char+float),但不能使用String(char+float)?无论如何,我只是尝试了
String(“,”+f)
(其中
intf=1
),它成功了。但是,
String(“,“+f+”,”)
不起作用。我真的很困惑……这两者之间有什么不同?我不知道为什么会起作用。真正的答案是停止使用String类。你要把这个字符串发送到哪里?如果它是从串行线路输出的,那么就没有必要将其全部组装成一个字符串。在第一种情况下,日期是一个字符串。有一些函数可以添加字符串和浮点。在第二种情况下,两者都不是字符串,因此没有+函数来添加它们。在小型微控制器上使用字符串,特别是过度使用+运算符,会导致堆碎片和随机崩溃。通常最好避免使用它。@Delta_G那么,可以使用String(String+char+float),但不能使用String(char+float)?无论如何,我只是尝试了
String(“,”+f)
(其中
intf=1
),它成功了。但是,
String(“,“+f+”,”)
不起作用。我真的很困惑……这两者之间有什么不同?我不知道为什么会起作用。真正的答案是停止使用String类。你要把这个字符串发送到哪里?如果它是从串行线路输出的,那么就没有必要将其全部组装成一个字符串。每件作品都叫print。