分析下面的程序:

分析下面的程序:

#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=97, c2=98

​ 因为第一行十一字符形式输出,所以会吧97和98当作相依字符的ascii值,输出的时候按照字符显示,

​ 第二行由于是以整形输出,所以输出对应整数值

(2)如果将程序第4,5行改为

c1 = 197;

c2 = 198;

运行时会输出什么信息?为什么?

​ 答: 会输出:

分析下面的程序:

​ 因为c1和c2为char类型,其保存的数据范围为-128~127,当c1=197,c2=198时,已经超出了char类型所能够保存的数据范围,此时会进行相应的转换为c1=-59,c2=-58,只是第一行以字符输出时,c1=-59,c2=-58为不可显示字符,所以输出了?,而第二行以整数输出时就进行了相应的整数显示。

(3)如果将程序第3行改为

int c1, c2;

运行时会输出什么信息?为什么?

​ 答: 会输出

分析下面的程序:

​ 因为c1和c2为int时,第二行以整形输出自然能够保存的下,但第一行以字符输出时,虽然数据int能够储存,但是在输出时需要准换为字符,转换后数据就超出了范围,此时c1=-59,c2=-58,两者都为不可显示字符,所以就显示了?。

posted @ 2020-08-03 11:38  张震新  阅读(541)  评论(0编辑  收藏  举报