C语言 char型数据赋值给int型数据得问题

#include
int main(void)
{
char aChar;
int aInt;
aInt = aChar = -120;
printf("%d\n",aInt);
return 0;
}
A:一定输出-120
B:一定不能输出-120
C:可能输出-120
D:输出%d

为什么可能输出-120,在赋值过程中,二进制到底是如何赋值的。

应为char类型在有些机型上是有符号的编码格式,C语言中并没有规定,所有有可能是-120

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/772360
  • 你也可以参考下这篇文章:c 结构体-关于char[ ]赋值的解决
  • 除此之外, 这篇博客: c语言中int类型与char类型数据转换中的 1、char----->int: 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    少字节类型转换为多字节类型,没有影响,数据也不会发生变化。

    #include <stdio.h>
    int main()
    {
        char cret = 0xff;
        int num =cret;
        int value = 0xff;
        printf("cret=%x\n",cret);
        printf("cret=%d\n",cret);
        printf("num=%x\n",num);
        printf("num=%d\n",num);
        printf("value=%x\n",value);
        printf("value=%d\n",value);
    }
    

     


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^