gpt4 book ai didi

c++ - 有符号和无符号字符

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:57:13 24 4
gpt4 key购买 nike

为什么 signed charunsigned char 两个值相同的字符不相等?

char a = 0xfb; 
unsigned char b = 0xfb;
bool f;
f = (a == b);
cout << f;

上述代码中,f的值为0。
为什么 ab 具有相同的值?

最佳答案

没有接受小于 int 的整数的算术运算符。因此,两个 char 值首先被提升为 int,参见 integral promotion了解全部详情。

char 在您的平台上已签名,因此 0xfb 被提升为 int(-5),而 unsigned char 被提升为 int(0x000000fb)。这两个整数不相等。

另一方面,[basic.fundamental] 中的标准要求所有 char 类型占用相同的存储量并具有相同的对齐要求;也就是说,它们具有相同的对象表示,并且对象表示的所有位都参与值表示。因此,memcmp(&a, &b, 1) == 0true

关于c++ - 有符号和无符号字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51749197/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com