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

标签 c++ arduino

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

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

调试函数是:

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

全局 debugEnabled 标志被初始化为 true

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

7 
7 
72 
7 

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

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

最佳答案

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

关于c++ - 为什么二进制值和字符之间的转换不一致?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18485734/

相关文章:

arduino - Arduino F() 宏的实现

arduino - LoRa 模块的 ID

c# - 串口+C#数据接收问题

c++ - 调试语句放置修复了不一致的输出

c++ - C++ 中的私有(private)构造函数

c++ - 调试编译器故障

c - pgm_read_ 和 PROGMEM - 意外行为

c++ - 为什么构造函数不使用 WinAPI 执行所有代码?

c++ - 连接 const_string 的

c++ - 带有静态链接的 Python 3.3 undefined reference