c++ - C++ - 值大于 127 的字符获得负值
问题描述
在我的 C++ 程序中,我有以下行:
text += (char)value;
是一个 ASCII 值,只要这个value
值大于 127,对应的字符(添加到text
)就会有一个负值。为什么 ?我该如何防止呢?注意:text
只是一个字符串
我在 StackOverflow 上找到了这个。一个相关的线程,但没有提供解决方案。
解决方案
char
默认情况下是有符号的,它的大小是一个字节(8 位)。一个字节允许表示 256 个不同的值。当所述字节被签名时,它可以表示从 -128 到 127 的值。如果你希望它表示 0-255 之间的数字,你应该将你的变量value
转换为unisgned char
.
text += (unsiged char)value;
会很好用。
无论如何,不存在由大于 127 的 ascii 值表示的字符。
编辑:如评论中所述,默认情况下未签名 char 。但是,当在 windows 上使用 g++ 和 vs 编译器时,它会被签名。
推荐阅读
- java - Junit 5 中的多项测试
- ajax - 带有返回部分视图的 Asp.net 核心控制器功能,其中 select2 不起作用,远程功能验证未在模式弹出窗口中触发
- mysql - Docker mysql容器不允许远程连接
- python - 拆分时超出范围(基本)
- kotlin - Kotlin 中类型投影的使用站点与声明站点的差异
- c# - 循环遍历某个字符串的所有出现并用 C# 中的不同值替换每个字符串?
- r - 在 R 中使用行函数时出现意外的“,”
- jquery - 如果选中单选按钮,则显示隐藏 div
- c++ - 使用均匀分布的随机数进行蒙特卡罗模拟
- typescript - 在 TypeScript 中循环设置对象字段