gpt4 book ai didi

c++ - C++中有符号和无符号之间的转换

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

考虑以下 C++ 代码:

#include <cstdio>

using namespace std;

int main()
{
int ia = -5;
unsigned int uia = ia;
char ca = -5;
unsigned char uca = ca;

printf("%d\n", (ia == uia));
printf("%d\n", (ca == uca));

return 0;
}

输出是

1
0

在从 signed 转换为 unsigned 时,我不明白 intchar 有什么区别?

能请教一下吗?

最佳答案

从有符号转换为无符号时,它们的行为相同。不同之处在于 == 比较。对于 int/unsigned,它的行为符合预期,但是当您比较两个较小的类型时,它们都会首先提升为 int。所以发生的是 -5 和 -5 的无符号 8 位表示都被提升为 int 然后进行比较。这些明显不同,无法比较。

关于c++ - C++中有符号和无符号之间的转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15995564/

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