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

时间:2013-08-28 10:44:45

标签: c++ arduino

使用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变量。

对于可能出现的问题或如何进一步调试此问题的任何建议都将非常感激。

1 个答案:

答案 0 :(得分:5)

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