gpt4 book ai didi

c++ - 有符号与无符号比较

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

#include <iostream>

int main()
{
signed int a = 5;
unsigned char b = -5;
unsigned int c = a > b;

std::cout << c << std::endl;
}

此代码打印0

谁能解释一下这里发生了什么?我猜测编译器将 ab 转换为相同类型(unsigend int 可能)并比较它们。

最佳答案

让我们看看计算机如何存储值b:
500000101,所以 -5 将是 11111011,所以,当你将它转换为 unsigned char,它会变成一个二进制值为11111011的正数,大于00000101
所以,这就是 a = 00000101 小于 b 的原因(0 表示错误)。

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

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