c++ - 增加一个 uint8_t 变量,奇怪的结果
问题描述
在 C++ 类中,我有以下代码/while 循环:
uint8_t len = 0;
while (*s != ',') {
len = (uint8_t)(len + 1u);
++s;
}
return (len);
结果应该是介于 0 和最大 20 之间的值。当我收到一个奇怪的结果时,并开始调试。当我逐步执行此操作时,我得到了变量 Len 的以下值:
'\01'、'\02'、'\03'、'\04'、'\05'、'\06'、'\a'、'\b'、'\t'</p>
我不明白从 '\06' 到 '\a' 的变化!
有人可以解释一下吗?我希望 Len 值简单地增加 1,直到字符数组指针 s 碰到 ',' 字符。
解决方案
这些值是正确的,但您的调试器将它们解释为char
类型,而不是整数类型。
您可以在此处查看 C++ 中使用的转义序列(以及 ASCII 中的相应值)。
\01
- 八进制的 1,十进制的 1
\02
- 八进制的 2,十进制的 2
...
\06
- 八进制的 6,十进制的 6
\a
- 相当于\07
,使用计算机铃声的 ASCII 码
\b
- 相当于\010
(八进制 10,十进制 8), “退格”字符的 ASCII 代码
\t
- 相当于\011
(八进制 11,十进制 9),制表符的 ASCII 代码
等。
我不知道您是否可以更改调试器解释数据的方式。最坏的情况是,您始终可以在将其转换为int
.
(gdb)p static_cast<int>(len)
推荐阅读
- python - 将 Python 列表列表转换为 numpy 单位矩阵
- librosa - 如何使用 librosa.effects.split() 获得与 pydub.silence.detect_nonsilent() 相似的结果?
- python - 配置 pip 使用的编译器标志
- python - 为什么相同的代码在不同的运行时运行?
- node.js - 在电子项目中使用没有 webpack 的 monaco-editor 和 typescript
- python - 在 python 中,我有 100 个页面的链接并想将它们保存为 html
- python - 如何让物体自行移动?
- python - 未定义/未使用的变量或意外缩进
- xml - 单个 Xpath 查询中的属性和相对位置?
- php - 如何使用 php 将 echo 中的所有变量结果保存到 txt 文件中?