gpt4 book ai didi

c - 在c中进行计算时如何将char更改为int?

转载 作者:太空宇宙 更新时间:2023-11-04 08:39:22 26 4
gpt4 key购买 nike

在下面的程序中,尽管 a 和 b 具有相同的值,但输出是“不相同”?我在谷歌上搜索了一下,发现 a 和 b 的值被转换为 int。a 的新值是 -5,b 的新值是 251。我不明白它们在类型转换后如何变得如此不同?二进制中的 a 是 11111011 并且 b 是 11111011 所以当它们被类型转换为 inta应该变成-53,怎么变成-5了。请解释一下?

#include<stdio.h>
int main(){
char a = 0xfb;
unsigned char b = 0xfb;

printf("a = %c", a);
printf("\nb = %c", b);

if (a == b)
printf("\nSame");
else
printf("\nNot Same");
return 0;
}

最佳答案

不,问题不在于它们被转换为 int 问题很可能是你的行

char a = 0xfb;

在你的系统上 char 可能是一个 signed 数据类型,但是 0xfb 是一个不在范围内的无符号值目标类型。因此它以实现定义的方式转换,通常转换为负数。所以 ab 绝对不具有相同的值。

关于c - 在c中进行计算时如何将char更改为int?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24492722/

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