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