gpt4 book ai didi

c - 当为 unsigned char 分配大于 255 的整数时,它会给出不同的输出,为什么?

转载 作者:行者123 更新时间:2023-11-30 21:15:16 25 4
gpt4 key购买 nike

#include<stdio.h>
int main()
{
unsigned char c =292;
printf("%d\n",c);
return 0;
}

以下代码给出输出“36”。我想知道为什么会发生这种情况?

最佳答案

因为 292 不适合 unsigned char 类型的变量。

我建议你编译这个程序:

#include <stdio.h>
#include <limits.h>
int main()
{
unsigned char c =292;
printf("%d %d\n", c, UCHAR_MAX);
return 0;
}

并检查输出:

prog.c: In function 'main':
prog.c:5:21: warning: unsigned conversion from 'int' to 'unsigned char' changes value from '292' to '36' [-Woverflow]
unsigned char c =292;
^~~
36 255

因此,我的系统中的 UCHAR_MAX 是 255,这是允许分配给 c 的最大值。

292 只是溢出了 c,并且因为它是无符号类型,所以它从 0 到 255,因此它会回绕,得到 292 - (255 + 1) = 36。

关于c - 当为 unsigned char 分配大于 255 的整数时,它会给出不同的输出,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46967615/

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