首页 > 解决方案 > C++ - 值大于 127 的字符获得负值

问题描述

在我的 C++ 程序中,我有以下行:

text += (char)value;

是一个 ASCII 值,只要这个value值大于 127,对应的字符(添加到text)就会有一个负值。为什么 ?我该如何防止呢?注意:text只是一个字符串

我在 StackOverflow 上找到了这个。一个相关的线程,但没有提供解决方案。

标签: c++char

解决方案


char默认情况下是有符号的,它的大小是一个字节(8 位)。一个字节允许表示 256 个不同的值。当所述字节被签名时,它可以表示从 -128 到 127 的值。如果你希望它表示 0-255 之间的数字,你应该将你的变量value转换为unisgned char. text += (unsiged char)value;会很好用。

无论如何,不​​存在由大于 127 的 ascii 值表示的字符。

编辑:如评论中所述,默认情况下未签名 char 。但是,当在 windows 上使用 g++ 和 vs 编译器时,它会被签名。


推荐阅读