Arrays ARDUINO:串行。打印多字符元素

Arrays ARDUINO:串行。打印多字符元素,arrays,c,arduino,serial-port,Arrays,C,Arduino,Serial Port,我需要打印4位长的数字,这些数字是从0到16(0000,0001,0010,…)的二进制数 问题: 考虑到这一准则: char array[] = {'0000', '0001', '0010', '0011'}; int i; void setup() { Serial.begin(9600); } void loop() { while (i < 4){ Serial.println(array[i]); i++; } } 或者我的预期输出是: 00

我需要打印4位长的数字,这些数字是从0到16(0000,0001,0010,…)的二进制数

问题:

考虑到这一准则:

char array[] = {'0000', '0001', '0010', '0011'};
int i;

void setup() {
  Serial.begin(9600); 
}

void loop() {
  while (i < 4){
    Serial.println(array[i]);
    i++;
  }
}
或者我的预期输出是:

0000
0001
0010
0011
似乎只读取数组中每个元素的第一个“字符”

问题:如何像在预期输出中一样打印每个元素的完整性?

经过一些研究,我发现:

这是指使用,但我不确定这是否是我需要的,或者我的问题是否有更简单的解决方案


谢谢

如评论中所述,不要使用多字符常量(您使用的常量,带单引号);他们可能会杀死小狗。单引号用于字符常量,如
'a'

可以使用字符串(带双引号)或实数二进制数;如果没有欺骗,后者将打印不带前导零

此代码示例兼有这两种功能,因此请选择您需要的:

const char*array1[]={“0000”、“0001”、“0010”、“0011”};//串
uint8_t array2[]={0b000、0b0001、0b0010、0b0011};//二进制数
int arraySize=sizeof(array1)/sizeof(array1[0]);
无效设置(){
Serial.begin(9600);
而(!串行);
println(“打印字符串:”);
int i=0;
而(i
多字符常量,例如
'0000'
是在其工作方式中定义的实现。请不要使用这种方法。如果需要多个字符,请使用字符串。至于此类常量的问题之一,请考虑在大多数系统(包括Arduino)上,
char
是一个单字节。如何将四个字符放入一个字节?是否忽略
sketch_nov11b.ino:1:17:警告:字符常量对于其类型char数组[]太长={'0000',0001','0010','0011'}?它可以工作,这正是我所需要的,谢谢你的帮助我不知道可以像你那样创建字符串数组
0000
0001
0010
0011