const char reset = '3';
char savedArray[32] = "0000000000000000000000000000000";
savedArray[reset] = '1';
Serial.println(savedArray[reset]);
Serial.println(savedArray[3]);
Serial.println(savedArray);
所以我正在更改位置savedArray
的{{1}}的值,但是当我再次读出它时,我发现它3
..我做错了什么?为什么不重置与3相同?
串行输出:
0
答案 0 :(得分:4)
假设ASCII或甚至EBCDIC编码'3'
是大于32的值。(在ASCII中,它是51)。
在savedArray[reset]
中使用此行为的行为是 undefined ,因为您正在尝试访问数组savedArray
的 bounds 之外的索引。使用const char reset = 3;
将数字值3分配给任何数字类型,包括 const char
。
答案 1 :(得分:3)
不,您正在更改数组元素51
(ASCII table中的'3'
的值),因此您将访问数组边界之外。
更改为const char reset = 3;
答案 2 :(得分:2)
等等,你出错了。您根本不会更改位置所以我要更改位置
savedArray
的3
值。
3
的值。在您的代码中,
const char reset = '3';
与
相同const char reset = 51; //considering ASCII
因为,字符文字(常量) 是超出限制的访问权限,因为 或,'3'
代表十进制51
(ACSII 中的),以后为< / p>
savedArray[reset] = '1';
savedArray
的大小为32.您可能想要编写 const char reset = 3; //decimal 3
#define RESET 3 //MACROS are better suited as "array index", just suggesting