欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

分析下面的程序

程序员文章站 2022-03-04 08:47:44
...

分析下面的程序:

#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,两者都为不可显示字符,所以就显示了?。