有许多与此相关的问题,但是它们回答了char *到unsigned char *的转换。我想问的是char到unsigned char的转换:
如果我将C字符(C样式或静态广播)转换为无符号字符,例如:
char c = 'A' ;
unsigned char uc = ( unsigned char ) c ;
在转换过程中c
的整数值可以更改吗?
由于 char 是带符号的还是无符号的,实现是定义的,所以无论它是带符号的,强制转换都可能会更改字符的整数值吗?
我主要关心的是积极的价值观。如果我采用“高于”方式,是否有可能更改值?
答案 0 :(得分:3)
从C ++ 14开始,如果char
必须为2的补数,则signed
。
因此,从signed char
到unsigned char
的转换以及反之亦然不能更改基础位模式。