c++ - 负 ASCII 值

标签 c++ c

负 ASCII 值有什么意义?

int a = '«'; //a = -85 but as in ASCII table '<<' should be 174

最佳答案

没有负数ASCII值。 ASCII 包括 128 个字符的定义。他们的指数都是正数(或零!)。

您看到此负值是因为该字符来自 Extended ASCII 集并且太大而无法放入 char 文字中。因此,该值会溢出到定义负值的 char 位(显然是在您的系统上签名)。

解决方法是直接写入值:

unsigned char a = 0xAE; // «

为了约定,我用十六进制表示法编写它,因为我认为它看起来比 174 更漂亮。 :)

关于c++ - 负 ASCII 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4690415/

相关文章:

c - 如何使用 C 中的函数指针访问 .text 部分?

c - 静态代码分析

c - 十六进制参数 "or"| C 中的运算符

c++ - 如何在C++中创建具有动态对齐要求的对象?

c - 如何将 "pointer to a pointer"传递给需要 "pointer to array"的函数

c - 在 C 头文件中声明的结构 - gcc malloc 错误

c++ - 在 Qt 中无需分配即可将(很多!)数字转换为字符串的正确方法

c++ - 如何清除 C++ 应用程序中的输入缓冲区?

c++ - 使用 [] 运算符从指向 std::array<T, N> 的指针获取类型?

c++ - 大小未知的数组作为类成员,用于在运行时制作数组对象(对象创建时间)