C程序设计第三章第四题
3.4分析下面的程序:
#include<stdio.h>
int main()
{
char c1, c2;
c1 = 97;
c2 = 98;
printf("c1 = %c, c2 = %c\n", c1, c2);
printf("c1 = %d, c2 = %d\n", c1, c2);
return 0;
}
(1)运行时会输出什么信息?为什么?
输出结果截图:
分析:c1和c2是字符型数据,占用一个字节。%c 字符,输出的是97,98在ASCII码表中对应的字符,%d 有符号十进制整数,输出的是97和98.
(2)如果将程序第4,5行改为
c1 = 197;
c2 = 198;
运行时会输出什么信息?为什么?
//改后代码
#include<stdio.h>
int main()
{
char c1, c2;
c1 = 197;
c2 = 198;
printf("c1 = %c, c2 = %c\n", c1, c2);
printf("c1 = %d, c2 = %d\n", c1, c2);
return 0;
}
?输出结果截图:
?分析:197和198超出ASCII码表(0-127)范围,计算机无法识别所以输出。输出整型时,整型的大小范围是(-2^7?~ 2^7-1),197和198超出范围,反向计数从-128开始计数,结果就是-59和-58。
(3)如果将程序第3行改为
int c1, c2;
运行时会输出什么信息?为什么?
//改后代码
#include<stdio.h>
int main()
{
int c1, c2;
c1 = 197;
c2 = 198;
printf("c1 = %c, c2 = %c\n", c1, c2);
printf("c1 = %d, c2 = %d\n ", c1, c2);
return 0;
}
输出结果截图:
?分析:第一行输出结果同第二问解释。
作者的编译水平有限,欢迎指出代码中的不足,欢迎改进,谢谢点赞。
|