C++ 为什么二进制值和字符之间的转换不一致?
与arduino合作。我在一个进程中运行两次的函数中有以下代码: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标
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终止正在构建的其他字符串。这就引出了下一个问题。。。我会给你这一点,并打开另一个在我已经修复了我的调试代码位的灾难点。