1

与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是每次都正确打印变量时。

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

4

1 回答 1

5

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

于 2013-08-28T10:47:05.753 回答