這一節(jié)主要講解C語言中的幾個(gè)基本概念。
定義變量時(shí),我們使用了諸如 a、abc、mn123 這樣的名字,它們都是程序員自己起的,一般能夠表達(dá)出變量的作用,這叫做標(biāo)識(shí)符(Identifier)。
標(biāo)識(shí)符就是程序員自己起的名字,除了變量名,后面還會(huì)講到函數(shù)名、宏名、結(jié)構(gòu)體名等,它們都是標(biāo)識(shí)符。不過,名字也不能隨便起,要遵守規(guī)范;C語言規(guī)定,標(biāo)識(shí)符只能由字母(A~Z, a~z)、數(shù)字(0~9)和下劃線(_)組成,并且第一個(gè)字符必須是字母或下劃線,不能是數(shù)字。
以下是合法的標(biāo)識(shí)符:
a, x,? x3, BOOK_1, sum5
以下是非法的標(biāo)識(shí)符:
3s? ? 不能以數(shù)字開頭
s*T??? 出現(xiàn)非法字符*
-3x ? ?不能以減號(hào)(-)開頭
bowy-1??? 出現(xiàn)非法字符減號(hào)(-)
在使用標(biāo)識(shí)符時(shí)還必須注意以下幾點(diǎn):
C語言雖然不限制標(biāo)識(shí)符的長度,但是它受到不同編譯器的限制,同時(shí)也受到操作系統(tǒng)的限制。例如在某個(gè)編譯器中規(guī)定標(biāo)識(shí)符前128位有效,當(dāng)兩個(gè)標(biāo)識(shí)符前128位相同時(shí),則被認(rèn)為是同一個(gè)標(biāo)識(shí)符。
在標(biāo)識(shí)符中,大小寫是有區(qū)別的,例如 BOOK 和 book 是兩個(gè)不同的標(biāo)識(shí)符。
標(biāo)識(shí)符雖然可由程序員隨意定義,但標(biāo)識(shí)符是用于標(biāo)識(shí)某個(gè)量的符號(hào),因此,命名應(yīng)盡量有相應(yīng)的意義,以便于閱讀和理解,作到“顧名思義”。
關(guān)鍵字(Keywords)是由C語言規(guī)定的具有特定意義的字符串,通常也稱為保留字,例如 int、char、long、float、unsigned 等。我們定義的標(biāo)識(shí)符不能與關(guān)鍵字相同,否則會(huì)出現(xiàn)錯(cuò)誤。
你也可以將關(guān)鍵字理解為具有特殊含義的標(biāo)識(shí)符,它們已經(jīng)被系統(tǒng)使用,我們不能再使用了。
標(biāo)準(zhǔn)C語言中一共規(guī)定了32個(gè)關(guān)鍵字,大家可以參考C語言關(guān)鍵字及其解釋[共32個(gè)],后續(xù)我們會(huì)一一講解。
注釋(Comments)可以出現(xiàn)在代碼中的任何位置,用來向用戶提示或解釋代碼的含義。程序編譯時(shí),會(huì)忽略注釋,不做任何處理,就好像它不存在一樣。
C語言支持單行注釋和多行注釋:
單行注釋以//開頭,直到本行末尾(不能換行);
多行注釋以/*開頭,以*/結(jié)尾,注釋內(nèi)容可以有一行或多行。
一個(gè)使用注釋的例子:
/*
Powered by: c.biancheng.net
Author: 嚴(yán)長生
Date: 2017-10-25
*/
#include <stdio.h>
int main()
{
/* puts 會(huì)在末尾自動(dòng)添加換行符 */
puts("http://c.biancheng.net");
printf("C語言中文網(wǎng)\n"); //printf要手動(dòng)添加換行符
return 0;
}
運(yùn)行結(jié)果:
http://c.biancheng.net
C語言中文網(wǎng)
在調(diào)試程序的過程中可以將暫時(shí)將不使用的語句注釋掉,使編譯器跳過不作處理,待調(diào)試結(jié)束后再去掉注釋。
需要注意的是,多行注釋不能嵌套使用。例如下面的注釋是錯(cuò)誤的:
/*C語言/*中文*/網(wǎng)*/
而下面的注釋是正確的:
/*C語言中文網(wǎng)*/? /*c.biancheng.net*/
表達(dá)式(Expression)和語句(Statement)
其實(shí)前面我們已經(jīng)多次提到了「表達(dá)式」和「語句」這兩個(gè)概念,相信讀者在耳濡目染之中也已經(jīng)略知一二了,本節(jié)我們不妨再重點(diǎn)介紹一下。
表達(dá)式(Expression)和語句(Statement)的概念在C語言中并沒有明確的定義:
表達(dá)式可以看做一個(gè)計(jì)算的公式,往往由數(shù)據(jù)、變量、運(yùn)算符等組成,例如3*4+5、a=c=d等,表達(dá)式的結(jié)果必定是一個(gè)值;
語句的范圍更加廣泛,不一定是計(jì)算,不一定有值,可以是某個(gè)操作、某個(gè)函數(shù)、選擇結(jié)構(gòu)、循環(huán)等。
趕緊劃重點(diǎn):
表達(dá)式必須有一個(gè)執(zhí)行結(jié)果,這個(gè)結(jié)果必須是一個(gè)值,例如3*4+5的結(jié)果 17,a=c=d=10的結(jié)果是 10,printf("hello")的結(jié)果是 5(printf 的返回值是成功打印的字符的個(gè)數(shù))。
以分號(hào);結(jié)束的往往稱為語句,而不是表達(dá)式,例如3*4+5;、a=c=d;等。