谁能帮我解释解释

来源:百度知道 编辑:UC知道 时间:2024/05/14 07:52:34
"短"数据赋给"长"变量
若最高位为1(负数),则变量高字节位补1;
反之,补0.

include<stdio.h>
void main()
{
char c;int i;
c=43;i=c;
printf("i=%d\n",i);
c='\376';i=c;
printf("i=%d\n",i)


第一个i 的输出结果怎么是43
教程里说的 43号字符是"+" 所以整形内存排列前面就是00
后面不变

第二个i输出的是-2 实在搞不懂 咋是-2了

大虾给俺解释清楚点

第一个:
c=43-->00101011; 前面是0就补0,i=c-->00000000 00101011即 43
所以就输出 i=43

第二个:
"\376"它是8进制的整形数 即10进制的 192+56+6=254:11111110
前面是1,故在转变成整形时前面也加1,即i-->11111111 11111110
将它取反加1就是00000000 00000010-->i=-2
希望能对你有帮助.
我们也是初学者,我交了几个朋友,都是baidu里面认识的,
我们搞了个群:
C语言互助小组 19571932
有兴趣来一起学习啊!~