初学C语言4

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;	
}

输出结果截图:

 分析:第一行输出结果同第二问解释。

作者的编译水平有限,欢迎指出代码中的不足,欢迎改进,谢谢点赞。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值