(1)程序输出:c1=a;c2=b;
c1=97;c2=98;
因为:你用%c,就是你要输出一个字符,97的ascii码就是小写字母a,98为b;
(2)如果你把c1=197,c2=198,应该会提示隐式转换吧,如果定义char c1,c2,默认为有符号的char型,取值范围为-128~127,因此输出的是197-256=-59,198-256=-58,貌似用%c一般机器输出的是?吧,一般的就输出0-127能输出字符吧。
(3)换成int和(2)的%c一样,%d就是int的值。
首先明白下面几点:
1.单个字符在内存中以二进制补码形式存储(对应ASCII表)
2.一个字符占一字节,那么无符号字符取值范围为:0~255,有符号为:-128~+127
看这个程序:
c1: 97 98
二进制:0110 0001 0110 0010
printf("c1=%c,c2=%c\n",c1,c2);//输出格式为%c,也就是以字符形式输出,对应ASCII表中的'a','b'
printf("c1=%d,c2=%d\n",c1,c2);//以十进制形式输出,97,98
②查表得出相应字符
③int c1,c2;//这时候c1,c2中的值是以32位(4B)存储的,数据的取值范围变了:-2^31~2^31-1
输出结果同①.
建议你在vc6.0上自己动手试试。
这种题目还是要自己动手,做出才有感觉。
初学C语言 要不要抄代码
你咋这么懒尼,自己上机试试不就知道了