首页 > 解决方案 > 将字符转换为无符号字符

问题描述

有很多与此相关的问题,但他们回答了从 char* 到 unsigned char* 的转换。我想问的是 char 到 unsigned char 的转换:

如果我将(C-style 或 static-cast)字符转换为无符号字符,例如:

char c = 'A' ; unsigned char uc = ( unsigned char ) c ;

施法过程中积分值可以c变化吗?由于char是有符号或无符号的,因此是否定义了实现,所以无论它是有符号的,转换是否可能会改变字符的整数值?

我主要关心的是积极的价值观。如果我采用“以上”方式,是否有可能改变价值观?

标签: c++castingcharunsigned

解决方案


从 C++14 开始,charifsigned 必须是 2 的补码。

因此从signed charto的转换unsigned char和反之亦然不能改变底层的位模式。


推荐阅读