Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/134.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 为什么二进制值和字符之间的转换不一致?_C++_Arduino - Fatal编程技术网

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

C++ 为什么二进制值和字符之间的转换不一致?,c++,arduino,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标

与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中的字符串需要以额外的“\0”字符结尾。所有字符串处理函数都将继续执行,直到找到此终止符为止,并且将超出您可能拥有的任何数组限制,并产生意外和未定义的结果。

非常好的一点。我也知道,我用null终止正在构建的其他字符串。这就引出了下一个问题。。。在我修复了调试代码中的错误后,我会给你这一点的分数,并打开另一个。非常好的一点。我也知道,我用null终止正在构建的其他字符串。这就引出了下一个问题。。。我会给你这一点,并打开另一个在我已经修复了我的调试代码位的灾难点。