您好,登錄后才能下訂單哦!
小編給大家分享一下C語(yǔ)言基本語(yǔ)法的示例分析,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
給變量所取的名字叫變量名,定義變量的名字需要遵循標(biāo)識(shí)符的命名規(guī)則。
標(biāo)識(shí)符是用來(lái)標(biāo)識(shí)變量、符號(hào)常量、數(shù)組、函數(shù)、文件等名字的有效字符序列。
標(biāo)識(shí)符的命名規(guī)則:
1.只能由字母、數(shù)字和下劃線組成(例如:Score1,Stu_name)
2.第一個(gè)字符必須為字母或下劃線
3.區(qū)分大小寫(xiě)字母
4.C語(yǔ)言?xún)?nèi)部規(guī)定的標(biāo)識(shí)符(即關(guān)鍵字)不能作為用戶(hù)標(biāo)識(shí)
C語(yǔ)言的關(guān)鍵字:
C語(yǔ)言的關(guān)鍵字,是保留的一些特殊作用的詞語(yǔ),一共32個(gè)關(guān)鍵字
關(guān)鍵字 | 說(shuō)明 |
---|---|
auto | 聲明自動(dòng)變量 |
break | 跳出當(dāng)前循環(huán) |
case | 開(kāi)關(guān)語(yǔ)句分支 |
char | 聲明字符型變量或函數(shù)返回值類(lèi)型 |
const | 定義常量,如果一個(gè)變量被 const 修飾,那么它的值就不能再被改變 |
continue | 結(jié)束當(dāng)前循環(huán),開(kāi)始下一輪循環(huán) |
default | 開(kāi)關(guān)語(yǔ)句中的"其它"分支 |
do | 循環(huán)語(yǔ)句的循環(huán)體 |
double | 聲明雙精度浮點(diǎn)型變量或函數(shù)返回值類(lèi)型 |
enum | 聲明枚舉類(lèi)型 |
extern | 聲明變量或函數(shù)是在其它文件或本文件的其他位置定義 |
float | 聲明浮點(diǎn)型變量或函數(shù)返回值類(lèi)型 |
for | 一種循環(huán)語(yǔ)句 |
goto | 無(wú)條件跳轉(zhuǎn)語(yǔ)句 |
if | 條件語(yǔ)句 |
int | 聲明整型變量或函數(shù) |
long | 聲明長(zhǎng)整型變量或函數(shù)返回值類(lèi)型 |
register | 聲明寄存器變量 |
return | 子程序返回語(yǔ)句(可以帶參數(shù),也可不帶參數(shù)) |
unsigned | 聲明無(wú)符號(hào)類(lèi)型變量或函數(shù) |
union | 聲明共用體類(lèi)型 |
void | 聲明函數(shù)無(wú)返回值或無(wú)參數(shù),聲明無(wú)類(lèi)型指針 |
volatile | 說(shuō)明變量在程序執(zhí)行中可被隱含地改變 |
while | 循環(huán)語(yǔ)句的循環(huán)條件 |
C99新建關(guān)鍵字:
_Bool
、_Complex
、_Imaginary
、inline
、restrict
C11新建關(guān)鍵字:
_Alignas
、_Alignof
、_Atomic
、_Generic
、_Noreturn
、_Static_assert
、_Thread_local
常量:在程序運(yùn)行過(guò)程中,其值不會(huì)發(fā)送變化的量。
變量:在程序運(yùn)行過(guò)程中,其值可以發(fā)送變化的量
C語(yǔ)言提供的常量類(lèi)型有整型常量、實(shí)型常量、字符常量、字符串常量和符號(hào)常量。
用一個(gè)標(biāo)識(shí)符來(lái)代表一個(gè)常量,該標(biāo)識(shí)符叫做符號(hào)常量,其一般形式為:
#define 標(biāo)識(shí)符 常量
例如:
#define PI 3.1415926
關(guān)于typede和defin的用法與區(qū)別:
1.#defien是預(yù)處理指令,在編譯預(yù)處理時(shí)進(jìn)行簡(jiǎn)單替換,不作正確性檢查,不管含義是否正確照樣帶入,只要在編譯器已被展開(kāi)的源程序時(shí)才會(huì)發(fā)現(xiàn)可能的錯(cuò)誤并報(bào)錯(cuò)。
例如:#define PI 3.1415926
程序:area = PIrr替換3.1415926r
2.rtypedef是在編譯時(shí)處理的,通常是用于對(duì)已有數(shù)據(jù)類(lèi)型取別名,而#define只是簡(jiǎn)單地替換。
例如:typedef unsigned int uint;
這樣就為unsigned int型引入新助記符uint,以后使用uint直接代表unsigned int型。
例如:typedef PI 3.1515926;
編譯器會(huì)直接報(bào)錯(cuò),原因PI并非已存在類(lèi)型,其次“3.1515926”不符合命名規(guī)則。
1.變量在內(nèi)存中占用一定的儲(chǔ)存單元,在該儲(chǔ)存單元中存放變量值。
2.程序中用到的所有變量都必須有一個(gè)變量名
3.變量名和變量值是兩個(gè)不同的概念
4.不同類(lèi)型的變量在內(nèi)存中占據(jù)儲(chǔ)存單元的數(shù)量及儲(chǔ)存的格式不相同,例如:char ch = ‘1';int i = 1;
5.變量必須“先定義后使用”,這樣做的目的是:
1、便于編譯程序程序檢測(cè)對(duì)該變量的運(yùn)算是否合法。例如:整型變量可以進(jìn)行求模(余數(shù))運(yùn)算,實(shí)型變量不可以進(jìn)行求模運(yùn)算。
2、程序中變量名的正確使用
整型常量就是整數(shù),有3種表示形式
1.十進(jìn)制整常數(shù):就是通常整數(shù)的寫(xiě)法,數(shù)碼取值為0-9。例如:25、-623、0等
2.八進(jìn)制整數(shù):以0為前綴,數(shù)碼取值0-7,
例如:
020(十六進(jìn)制16)
016(十六進(jìn)制14)
0177777(十六進(jìn)制65535)
-010(十進(jìn)制數(shù)-8)
幾種不合法的八進(jìn)制數(shù):
256(無(wú)前綴0)
079(包含了非八進(jìn)制數(shù)碼9)
3.十六進(jìn)制整型常數(shù):以數(shù)字和字母0x開(kāi)頭,即0x作為前綴,數(shù)碼的取值為0-9和A-F(或字母a-f)
幾種合法的十六進(jìn)制數(shù):
0x2A(十進(jìn)制數(shù)42)
0x1AB0(十進(jìn)制數(shù)6832)
幾個(gè)不合法 的十六進(jìn)制數(shù):
5A(無(wú)前綴)、0x2H(包含了非十六進(jìn)制數(shù)碼H)
整型變量分為:基本整型、長(zhǎng)整型、短整型、無(wú)符號(hào)型
整型變量的定義及初始化:
定義變量及初始化的一般形式 為:
類(lèi)型說(shuō)明符 變量名1 = 值1
例如:
int a,b,c; //定義a,b,c為整型變量 long x = 10; //定義x為長(zhǎng)整型變量,并附初值10 unsigned int p=2,q=5,m; //定義p,q,m為無(wú)符號(hào)整型變量。p賦初值為2,q賦初值為5
整型變量需要注意:
1、允許在一個(gè)類(lèi)型說(shuō)明符后,定義多個(gè)相同類(lèi)型變量,類(lèi)型說(shuō)明符與變量名之間至少用一個(gè)空格間隔,各變量名之間用逗號(hào)間隔
2、最后一個(gè)變量名后面用“;”號(hào)結(jié)尾
3、變量定義必須放在變量使用之前,一般放在函數(shù)體開(kāi)頭
4、沒(méi)有給變量賦初值,并不意味著該變量中沒(méi)有數(shù)值,只表面給變量中沒(méi)有確定的值,因此直接使用這種變量的話可能產(chǎn)生莫名其妙的結(jié)果,有可能導(dǎo)致運(yùn)算錯(cuò)誤
例程:
#include <stdio.h> void main(void) { int a = 3, b = 5, c, d; c = a+b; d = a-b; printf("a+b=%d,a-b=%d\n",c,d); }
計(jì)算機(jī)中數(shù)分為有符號(hào)和無(wú)符號(hào)。他們是以二進(jìn)制形式表示的,有三種表示方法,即原碼和補(bǔ)碼。
三種表示方式由符號(hào)位和數(shù)值位兩部分構(gòu)成
符號(hào)位在最高位,用0表示“正”,1表示“負(fù)”。
取余位為數(shù)值位
原碼:按照二進(jìn)制的方法來(lái)表示數(shù)的絕對(duì)值,用這個(gè)方法得到的就是數(shù)的原碼。
反碼:正數(shù)的反碼與其原碼相同,負(fù)數(shù)的反碼為其原碼除符號(hào)位以外的各位 按為取反。
補(bǔ)碼:正數(shù)的補(bǔ)碼與其原碼相同,負(fù)數(shù)的補(bǔ)碼是將其原碼除符號(hào)位之外的各位求反之后,在末位再加1
正數(shù)的原碼、反碼。補(bǔ)碼相同;負(fù)數(shù)的原碼、反碼、補(bǔ)碼不同。數(shù)值在計(jì)算機(jī)中以補(bǔ)碼形式存放。
例如:求-127的補(bǔ)碼
實(shí)型數(shù)據(jù)又稱(chēng)為實(shí)數(shù)或浮點(diǎn)數(shù),指是帶有小數(shù)部分的非整數(shù)數(shù)值。
在C語(yǔ)言中,實(shí)數(shù)常量只能用十進(jìn)制數(shù)表示,有兩種表示方法:
1.小數(shù)形式:由數(shù)字0~9和小數(shù)點(diǎn)組成,當(dāng)小數(shù)部分為零時(shí),小數(shù)點(diǎn)不能省略。例如:0.0/24.4、-56.33等均為合法的實(shí)型常量
2.指數(shù)形式:由十進(jìn)制數(shù)、加階碼標(biāo)志小寫(xiě)字母“e”(或大寫(xiě)字母“E”)和階碼(必須是整數(shù))組成。
例如:2.3E5(相當(dāng)于2.3 x 10^5)
以下是不合法的實(shí)型常量:
123(無(wú)小數(shù)點(diǎn))
E4(階碼“E”之前無(wú)數(shù)字)
23.-E3(負(fù)號(hào)的位置不對(duì))
2.7E(無(wú)階碼)
例如:
float a,b,c; //定義a,b,c為單精度實(shí)型變量 double m=3.5,n=5.6; //定義m,n為雙精度實(shí)型變量,并分別賦值3.5和5.6
字符常量是用一對(duì)單引號(hào)括起來(lái)的一個(gè)字符
例
如:‘b'、‘z'、‘='、‘?'、‘5'
字符常量特點(diǎn):
1.字符常量只能是單個(gè)字符,不能是多個(gè)字符
2.字符常量是以ASCII碼形式儲(chǔ)存,一個(gè)字符常量占用一個(gè)字節(jié)空間。
ASCII碼表示American Standrd Code for Information Interchange。ASCII編碼能表示數(shù)據(jù)范圍是00000000~11111111共2^8即256個(gè)數(shù)據(jù)
標(biāo)準(zhǔn)的ASCII碼有128個(gè)字符,其中:
1.0-31為控制字符,例如,回車(chē)換行、文件結(jié)束標(biāo)志、字符串結(jié)束標(biāo)志
2.10個(gè)阿拉伯‘0'~‘9'的碼值是連續(xù)的
3.26個(gè)大寫(xiě)字母‘A'-‘Z'是連續(xù)的,26和大小寫(xiě)字母‘a(chǎn)'-‘z'是連續(xù)的
4.字符常量也可以參與各種運(yùn)算,如:‘B'-‘A'值為1(字符‘B'的ASCII碼值減去66字符‘A'的ASCII碼值65結(jié)果為1)
1.字符型變量在內(nèi)存中占用1個(gè)字節(jié),只能存放一個(gè)字符,并以該字符的ASCII碼的值的形式存放
2.在C語(yǔ)言中,一個(gè)字符型數(shù)據(jù)可以按照它的ASCII碼進(jìn)行數(shù)據(jù)運(yùn)算
字符型數(shù)據(jù)儲(chǔ)存空間和值范圍
類(lèi)型 | 字節(jié)數(shù) | 取值范圍 |
---|---|---|
char | 1 | -128~127 |
unsigned char | 1 | 0~255 |
例程:給字符變量賦整數(shù)值
#include <stdio.h> int main() { char ch2=65,ch3=66; printf("%c,%c\n",ch2,ch3); printf("%d,%d\n",ch2,ch3); }
轉(zhuǎn)義字符:是由一個(gè)反斜杠“"后跟規(guī)定,具有特定含義的字符
常用轉(zhuǎn)義字符如下表
轉(zhuǎn)義字符使用如下:
#include <stdio.h> int main() { printf("\"china\"\n"); printf("My \tCountry.\n"); printf("I am hap\160\x79.\n"); }
字符串常量是簡(jiǎn)稱(chēng)字符串,是用一對(duì)雙撇號(hào)(西方雙引號(hào)英文)括起來(lái)的一串字符,包含字符的個(gè)數(shù)和字符長(zhǎng)度
例如:“Hello World”?!癮”,“C語(yǔ)言”都是字符串常量。
字符串常量和字符常量區(qū)別:
1.字符常量是右邊單引號(hào)括起來(lái)的字符,而字符串常量是由雙引號(hào)括起來(lái)的字符。盡管‘a(chǎn)'與“a”都包含一個(gè)字符,但在C程序中,它們都具有不同的含義
2.字符常量只能是一個(gè)字符,字符串常量可以是多個(gè)字符
3.可以把一個(gè)字符串常量賦值一個(gè)字符變量,但不能把一個(gè)字符常量賦值一個(gè)字符變量。
在C語(yǔ)言中沒(méi)有專(zhuān)門(mén)的字符串類(lèi)型,我們只能使用數(shù)組或者指針來(lái)間接地存儲(chǔ)字符串。
char str1[] = "Hello World!" char *str2 = "你好世界!"
str1 和 str2 是字符串的名字,后邊的[]和前邊的*是固定的寫(xiě)法。初學(xué)者暫時(shí)可以認(rèn)為這兩種存儲(chǔ)方式是等價(jià)的,它們都可以通過(guò)專(zhuān)用的 puts 函數(shù)和通用的 printf 函數(shù)輸出。
#include <stdio.h> int main() { char web_url[] = "hHello World!"; char *web_name = "你好世界"; puts(web_url); puts(web_name); printf("%s\n%s\n", web_url, web_name); return 0; }
以上是“C語(yǔ)言基本語(yǔ)法的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。