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



