分析下面的程序: (1)運行時會輸出什么信息?為什么?


分析下面的程序:

#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)運行時會輸出什么信息?為什么?

​ 答:會輸出 :

分析下面的程序: (1)運行時會輸出什么信息?為什么?

​ c1=97, c2=98

​ 因為第一行十一字符形式輸出,所以會吧97和98當作相依字符的ascii值,輸出的時候按照字符顯示,

​ 第二行由於是以整形輸出,所以輸出對應整數值

(2)如果將程序第4,5行改為

c1 = 197;

c2 = 198;

運行時會輸出什么信息?為什么?

​ 答: 會輸出:

分析下面的程序: (1)運行時會輸出什么信息?為什么?

​ 因為c1和c2為char類型,其保存的數據范圍為-128~127,當c1=197,c2=198時,已經超出了char類型所能夠保存的數據范圍,此時會進行相應的轉換為c1=-59,c2=-58,只是第一行以字符輸出時,c1=-59,c2=-58為不可顯示字符,所以輸出了?,而第二行以整數輸出時就進行了相應的整數顯示。

(3)如果將程序第3行改為

int c1, c2;

運行時會輸出什么信息?為什么?

​ 答: 會輸出

分析下面的程序: (1)運行時會輸出什么信息?為什么?

​ 因為c1和c2為int時,第二行以整形輸出自然能夠保存的下,但第一行以字符輸出時,雖然數據int能夠儲存,但是在輸出時需要准換為字符,轉換后數據就超出了范圍,此時c1=-59,c2=-58,兩者都為不可顯示字符,所以就顯示了?。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM