gpt4 book ai didi

c++ - 为什么这段代码的输出是fffffff9?

转载 作者:行者123 更新时间:2023-11-27 22:42:49 32 4
gpt4 key购买 nike

int main(){
char c=0371;
cout<<hex<<(int) c;
return 0;
}

我将 c 转换为二进制系统 (011 111 001),然后是十六进制 (f9)。那为什么它给出的结果是 fffffff9 而不是 f9?

最佳答案

如果您系统上的 char 类型是有符号的,则值 0xf9 是一个负数(具体来说,它是 -7)。因此,当您将其转换为整数时,它会为整数赋予数值 -7,其十六进制表示形式为 0xFFFFFFF9(如果您使用的是带符号的 32 位整数表示形式)。

如果您显式地将字符值设置为 unsigned char,那么 C++ 会将其转换为正值 249,它具有等效的整数值 249,十六进制表示形式为 0x000000F9。

关于c++ - 为什么这段代码的输出是fffffff9?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47021038/

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