正文 第11章 數據類型、運算符和表達式4(2 / 3)

由於在內存單元中的字符數據以ASCII碼存儲,它的存儲形式與整數的存儲形式類似,所以字符型數據和整型數據之間可以通用。C語言允許對整型變量賦以字符值,也允許對字符變量賦以整型值。一個字符數據既可以以字符形式輸出,也可以以整數形式輸出。以字符形式輸出時,將存儲單元中的ASCII碼轉換成相應字符輸出。以整數形式輸出時,直接將ASCII碼作為整數輸出。字符數據可以參與數值運算,等價於用字符的ASCII碼參與運算。

[例37]將整數賦值給字符變量。

voidmain()

chara,b;

a=109;

b=110;

printf("%c,%c\n",a,b);

printf("%d,%d\n",a,b);

運行結果:

m,n

109,110

程序分析:

程序中定義a、b為字符型變量,但在賦值語句中賦以整型值。因為“m”和“n”的ASCII碼值為109和110,它的作用相當於以下兩條賦值語句:

a=m;b=n;

字符型變量a、b值的輸出形式取決於printf函數格式串中的格式符,當格式符為“%c”時,對應輸出的變量值為字符,當格式符為“%d”時,對應輸出的變量值為整數。字符型數據和整型數據互相通用,它們既可以用字符形式“%c”輸出,也可以用整數形式“%d”輸出。但是應注意字符數據隻占一個字節,它隻能存放0~255範圍內的整數。

[例38]字符數據參與數值運算。

voidmain()

chara,b;

a=M;b=N;

a=a+32;b=b+32;

printf("%c,%c\n",a,b);

運行結果:

m,n

程序分析:

程序的作用是將兩個大寫字母“M”和“N”轉換成小寫字母“m”和“n”。從ASCII碼表中可以看到每一個小寫字母比與它對應的大寫字母的ASCII碼大32。C語言允許字符數據與整數直接進行算術運算,M+32會得到整數109。

用一對雙引號括起來的零個或多個字符序列稱為字符串常量,如"LiMing"、"Hello"。字符串的長度是指該字符串中字符的個數,不包括雙引號,如以上兩個字符串的長度分別為6和5。

在C語言中沒有專門的字符串變量,如果想將一個字符串存放在變量中,必須使用字符數組。

整型、實型、字符型數據間可以混合運算。例如,7+15*A-28。在進行運算時,不同類型的數據要先轉換成同一類型,然後進行運算。轉換的方法有兩種:一種是自動類型轉換,另一種是強製類型轉換。

1.自動類型轉換

兩種情況下會發生自動類型轉換,一種是不同數據類型的混合運算,另一種是賦值號兩邊的數據類型不同時的賦值運算。

不同數據類型進行混合運算時,由編譯係統自動完成自動類型轉換。

圖中橫向向左的箭頭表示必定的轉換。char型和short型數據參與運算時,必須先轉換成int型。float型的數據參與運算時,必須先轉換成double型,再作運算。