请教道C语言的题!

来源:百度知道 编辑:UC知道 时间:2024/06/07 13:23:42
#include<stdio.h>
main()
{
char c;int i;
c=43;i=c;
printf("i=%d\n",i);
c='\376';i=c;
printf("i=%d\n",i);
}

我的问题如下:
1 一开始c是定义为char字符型的,可是下面怎么赋值43给c啊?43不是整数型吗?
2 第2句输出结果是-2。我想请问一下为什么,能详细解释一下吗?
谢谢!
第1个问题已经解决了!!!谢谢~

请回答第2个问题吧!
c='\376';i=c;
printf("i=%d\n",i);
这2句再详细解释分析一下,谢谢!

字符 可以整数型通用
int 赋给 char 意思是: 将int的数字值在ASCII表在对应的字符赋给char变量
c = 43; 意思是将ASCII码值为43的字符赋给c (ASCII码值为43的字符是‘+’你把字符变量C 输出就知道了

而char 赋给int 意思是: 将char字符对应的ASCII码值赋给int
所以为什么第一个输出语句会是 43了
(c=43---此时c=‘+’( ASCII码值为43的对应字符) i=c 此时i=43(‘+’的ASCII码值)

c=43
43作为对应的ASCII值赋值给C
i=c
就是说i得到的是字符C现在的值
同理第二个printf也是如此
这之间隐藏了转换

43也是字符啊
char的定义很广
把43赋值给c他就是字符型
赋值给i他就是整数型,

2,,
翻开教材最后,查表,\376这是什么意思就知道了

c=43;//米有问题,给字符型分配的2个字节存储整型

c='\376';//错误,字符型只有2个字节
汗1,你非要给他4个字节的值那就声明"char".要用到数组.例:
char string[4];
string="abcd";

printf("i=%d\n",i); //要打印字符串,必须把%d改成%s

1.char在内存中为8字节的数。char 为有符号,范围从-128~127 256个数。43赋值给c.也就是c在内存中是43。我们可以把char认为是8为的int型。之所以需要char 是因为最初的ASC II码为128个,后来扩展为256个,这样用char表示字符就很方便;