为什么二进制值和字符之间的转换不一致

Why am I getting inconsistent conversions between a binary value and a character?

本文关键字:转换 不一致 之间 字符 二进制 为什么      更新时间:2023-10-16

使用arduino。我在一个过程中运行两次的函数中有以下代码:

int hours = 7;
char hour = hours+'0';
debug(&hour);
char hour2 = hours+'0';
debug(&hour2);

debug的功能是:

void debug(char message[]) {
  if (debugEnabled == true) {
    Serial.println(message);
  }
}

全局debugEnabled标志被初始化为true

每次整个过程运行时,我都会得到以下输出(因此执行第一个代码块两次):

7 
7 
72 
7 

我看不出有什么理由在第二次写入第一个变量时得到72,尤其是每次都正确打印hour2变量。

任何关于可能出现问题或如何进一步调试的建议都将不胜感激。

因为您将单个字符视为字符串。C中的字符串需要以一个额外的''字符结尾。所有字符串处理函数都将继续,直到它们找到这个终止符为止,并且将超出您可能拥有的任何数组限制,并产生意外和未定义的结果。