2.2 標識符、常量和變量
2.2 標識符、常量和變量
2.2.1 字符集
字符(Character)是組成語言最基本的元素。C 語言的字符集由字母、數字、空白符、標點和特殊字符組成。
① 字母:26個英文字母,包括大小寫共52個。
② 數字:0~9共10個。
③ 空白符:空格符、制表符、換行符統(tǒng)稱為空白符,共3個。
④ 標點和特殊字符:如+ - * / % _ . = < > & | ( ) [ ] { } ; ? : ' " ! # 等共25個。
2.2.2 標識符
標識符(Identifier)是一個由有限個有效字符組成的序列,在 C 語言中只起標識作用,可用作符號常量名、變量名、函數名、數組名、文件名等。
1.標識符的構成規(guī)則
C語言允許用作標識符的有效字符包括:
● 26個英文字母,包括大小寫
● 數字0,1,…,9
● 下劃線
合法的標識符必須由字母(A~Z,a~z)或下劃線(_)開頭,后面可以跟隨任意的字母、數字或下劃線。C語言標識符的長度(即一個標識符允許包含的字符個數)受C語言編譯系統(tǒng)的限制,比如,某C語言編譯系統(tǒng)規(guī)定標識符的有效長度是31,若超過31個字符,則后面的字符無效。不同的C語言編譯系統(tǒng)規(guī)定的標識符的長度可能會不同,學習者在使用標識符時應當了解所用編譯系統(tǒng)的規(guī)定。
合法的標識符:student,a10,Ij,_5n,x_sum
不合法的標識符:30d 錯在以數字開頭
a$n 錯在出現“$”
n abc 錯在中間有空格
2.C語言標識符的分類
標識符是形成C語言代碼的基礎。C語言中的標識符有3種類型:關鍵字、預定義標識符和用戶標識符,每種標識符都有自己的要求。
(1)關鍵字
C 語言中有一些標識符被稱為關鍵字或保留字,在系統(tǒng)中具有特殊用途,只能以特定的方式用在特定的地方,如果試圖將關鍵字用于其他用途,編譯程序將產生一個編譯錯誤。例如,標識符int是整型數據類型關鍵字。
表2.1列出了C語言完整的關鍵字列表,隨著教材內容的深入,讀者將理解在什么地方、為什么和如何使用這些關鍵字。
表2.1 C語言關鍵字
C 語言中有些標識符雖然不是關鍵字,但總是以固定的形式用于專門的地方,使用較多的預定義標識符是C語言標準函數(參見附錄B)。例如,printf是C語言提供的標準函數名, define是C 語言提供的編譯預處理命令等。因此,用戶也不要把它們當作一般標識符使用,以免造成混亂。
(3)用戶標識符
用戶標識符是由用戶根據需要定義的標識符。一般用于給變量、符號常量、數組、函數、指針、文件等命名。在程序中使用用戶標識符時除了要遵守標識符的構成規(guī)則外,還應注意以下兩點。
① 大小寫字母有不同的含義,例如,sum、Sum和SUM是3個不同的標識符。習慣上,變量名用小寫字母表示,符號常量名用大寫字母表示。
② 在構造用戶標識符時,應注意做到“見名知意”,即選用有含義的字符組合(如英文單詞或漢語拼音)作為標識符,以增加程序的可讀性。例如,表示日期可用day,表示長度可用length,表示和可用sum等。
2.2.3 常量
常量是指在程序運行過程中其值不發(fā)生改變的量。在C語言中,有直接常量(或字面常量)和符號常量兩種常量。直接常量可以從其字面形式上區(qū)分其數據類型,如12和-10為整型常量,2.5和-10.2為實型常量。
符號常量是用用戶標識符表示的常量。通常習慣用大寫字母表示符號常量。符號常量在使用之前必須在程序開頭定義。符號常量的定義形式為:
#define 符號常量名 常量
例如:
#define PRICE 30
符號常量一旦定義,凡是本程序中出現PRICE的地方,系統(tǒng)均用30來替換。
【例2.1】 已知某產品的單價和數量,求總價格。
程序代碼如下:
#define PRICE 30
/* 定義用戶標識符PRICE為符號常量,表示商品的單價為30 */
#include "stdio.h"
main( )
{
int num,total; /* 變量num表示產品數量,變量total表示總價格 */
num=10; /* 程序中出現的數值10為直接常量 */
total=num*PRICE; /* PRICE為符號常量 */
printf("total=%d\n",total);
}
程序運行結果為:
total=300
注意:
① 定義符號常量時。必須以 # 開始,在 #define 命令行的最后不能加分號。有關#define命令的使用,將在第7章詳細介紹。
② 符號常量所代表的值是不能改變的。正確使用符號常量可以增強程序的可讀性和可維護性。
2.2.4 變量
變量是指在程序執(zhí)行過程中其值可以改變的量。在源程序中,變量用標識符標識,表示變量的標識符稱為變量名。
在內存中,變量和一個存儲單元相對應,該存儲單元用于存放變量所代表的數據值。變量名、存儲單元和變量的值三者之間的關系如圖2.2所示。變量所對應存儲單元的大小(組成一個存儲單元的字節(jié)數)取決于變量值的數據類型,所以每個變量都與一個數據類型相聯(lián)系,類型決定了變量在內存中占據的存儲空間的大小,也就決定了變量可以取值的范圍和變量值可以參加的運算。所以變量名、變量類型和變量的值是一個變量的三要素。
在C語言程序中出現的任何一個變量必須首先確定其數據類型,即必須遵循“先定義,后使用”的原則,否則會在編譯時出錯。
變量定義的一般形式為:
類型標識符 變量名1,變量名2,……;
變量的定義一般出現在函數的開頭部分,如例2.1主函數中的語句“int num,total;”使用類型標識符int定義了兩個整型變量num和total,系統(tǒng)分別為它們各自分配由4個字節(jié)組成的存儲單元,以存放整型數據。
注意:一個定義語句必須以一個“;”結束。