C 中字符常量的负值

问题描述 投票:0回答:1

根据 P. Prinz 和 T. Crawford 所著的书 C in a Nutshell (2015),

如果

char
类型有符号,那么字符常量的值也可以为负数,因为常量的值是字符代码从
char
int
的类型转换的结果。

他们举了这个例子:

int c = '\xA3';    // Symbol for pounds sterling
printf("Character: %c      Code: %d\n", c, c);

根据这本书,产生

Character: £    Code: -93

在带有

char
签名的系统上。

我的问题是关于“字符代码从

char
int
的转换”。有些字符占用一个以上字节。例如,在我的系统上
printf("%d\n", 'م')
打印
55685
。那么在这种情况下谈论从
char
int
的转换有意义吗?

c char
1个回答
0
投票

是的,这确实有道理,因为

char
不是一个角色,尽管名字的选择很不幸。例如,文本的 UTF-8 表示形式使用一到四个
char
来表示一个可打印字符。

为了避免代码读者认为

char
是一个字符,以及可能存在带符号的
char
,您应该使用
uint8_t
来使字节解释清晰。

© www.soinside.com 2019 - 2024. All rights reserved.