在c語言中使用的詞彙分為6類:識別符號,關鍵字,運算子,分隔符,常量,注釋符等。
(一)識別符號。在程式中使用的變數名,函式名,標號等統稱為識別符號。c規定,識別符號只能是字母、數字、下劃線組成的字串,並且其第乙個字元必須是字母或下劃線。在識別符號中,大小寫是有區別的。
(二)關鍵字
ansi c關鍵字32個
break
case
char
const
continue
default
dodouble
else
enum
extern
float
forif
intlong
return
short
signed
static
struct
switch
typedef
union
unsigned
void
while
auto
goto
register
sizeof
volatile
關鍵字的分類彙總:
控制語句關鍵字
break
在switch和迴圈語句中用,結束switch或迴圈
continue
在迴圈語句中用,結束本次迴圈
if條件語句,滿足條件執行語句
else
條件語句,不滿足if條件執行語句。else總是與它前面最近的if配對。
switch
開關語句
case
開關語句分支,滿足哪個case後,會一直往下執行,直到遇到break或結束
default
switch語句用,如果之前沒遇到break,就一定會執行的語句
do直到型迴圈語句,不管while裡的條件是否滿足,都會執行一次迴圈體
while
當型迴圈語句
forfor迴圈
return
函式返回語句
資料型別關鍵字
char
字元型,1位元組
short
短整型,2位元組
int整型,4位元組
long
長整型,8位元組
signed
有符號型別
unsigned
無符號型別
float
單精度浮點型,實數,4位元組
double
雙精度浮點型,實數,8位元組
enum
列舉型別
struct
結構體型別
union
共同體(聯合)型別
void
空,宣告函式無返回值,宣告函式無引數,宣告無型別指標
儲存型別關鍵字
extern
外部變數,在其他檔案中宣告的變數
static
靜態變數
auto
自動變數
register
暫存器變數
其它關鍵字
typedef
資料型別起別名
sizeof
資料型別的位元組長度
const
唯讀變數,不可修改
goto
無條件跳轉語句,不建議使用
volatile
本意為「易變的,不穩定的」,用來解決變數在「共享」環境下容易出現的讀取錯誤的問題,在進行編譯時不優化,在執行的時候不快取, 每次都需要從記憶體中讀出,多用於多執行緒或多cpu程式設計
(三)運算子
1)運算子優先順序和結合性
結合性:多數運算子具有左結合性,單目運算子、三目運算子、賦值運算子具有右結合性。
優先順序:下標運算子》成員運算子》!(非) >單目運算子(右結合性)> 算術運算子 > 關係運算子 > 位運算子》&&(與)和||(或)>條件運算子(?:)(右結合性)>賦值運算子(右結合性)>逗號運算子
運算子的優先順序和結合性彙總:
運算子意義
運算類別
結合性()
圓括號一目左結合
下標運算子二目.
成員運算子,引用結構體成員
->
通過指標引用結構體成員
!邏輯非
一目右結合
~按位取反
+、-取正,取負
++、--
自增,自減
&取變數的位址
*間接引用運算子
(type)
強制型別轉換
sizeof
取資料所佔的位元組數
*、/、%
乘、除、求餘(整數才可求餘,餘數的符號與左邊數的符號相同)
二目左結合
+、-加、減
<<、>>
向左移位、向右移位
<、<=、>、>=
小於、小於等於、大於、大於等於
==、!=
等於、不等於
&、^、|
按位與、按位異或、按位或
&&、||
邏輯與、邏輯或
? :條件運算子
三目右結合
=賦值運算子
二目*=、/=、%=、+=、-=
復合賦值運算子
|=、^=、&=
復合賦值運算子
>>=、<<=
復合賦值運算子
,逗號運算子,順序求值
多目左結合
2)位運算子
c語言提供了6種位運算子(都是基於二進位,參與運算的均以補碼出現)
& 按位與(雙目,都為1才是1)
| 按位或(雙目,只要有1就是1)
^ 按位異或(雙目,不一樣是1)
~ 取反(單目,各位0變1,1變0)
<< 左移(各二進位全部左移,高位丟棄,低位補0)
>> 右移(各二進位全部右移,符號位隨同移動)
3)逗號運算子
在c語言中逗號「,」也是一種運算子,稱為逗號運算子。其功能是把兩個表示式連線起來組成乙個表示式,稱為逗號表示式。其求值過程是分別求兩個表示式的值,並以表示式2的值作為整個逗號表示式的值。多個逗號的表示式以最後乙個表示式的值作為整個表示式的值。
(四)分隔符。在c語言中採用的分隔符有逗號和空格兩種。逗號主要用在型別說明和函式引數表中,分隔各個變數。空格多用於語句各單詞之間,作間接符。
(五)常量。
程式語言一般提供兩種型別的常量:字面常量和符號常量
1.字面常量(分為:數字常量(包括整型常量和實型常量)、字元常量(包括轉義字元)、字串常量)
1)整型常量
c語言允許以十進位制(不能以數字0開頭,否則會被解釋為八進位制整數)、八進位制(以數字0開頭)、十六進製制(以0x或0x開頭,前面是數字0,不是字母o)表示乙個整型常量。
整型常數的字首和字尾
在程式中是根據字首來區分各種進製數的。因此在書寫常數時不要把字首弄錯造成結果不正確。
整型常數的字尾:長整型數和無符號數可用字尾表示。長整型數的字尾為「l」或「l」。無符號數的字尾為「u」或「u」。
字首和字尾可同時使用以表示各種型別的數。如0xa5lu表示十六進製制無符號長整數a5,其十進位制為165。
注意:十進位制、八進位制和十六進製制只是整數的三種不同的表現形式,如果轉換為十進位制相等,在記憶體中都對應同乙個二進位制數。
注意:八進位制數通常是無符號數,所以不會出現負號。
2)實型常量
一般只採用十進位制,其表示形式有小數形式和指數形式。
實型常數不分單、雙精度,都按雙精度double型處理。
標準c允許浮點數使用字尾,字尾為「f」或「f」即表示該數為浮點數。
小數形式:包含小數點,並且小數點兩邊必須有數字。
指數形式:包含字母e(或e),並且e之前必須有數字,e之後必須是整數,如1e2,12.3e5,-12.3e-5。其一般形式為:a e n(a為十進位制數,n為十進位制整數),其值為a*(10^n)。
3)字元常量
用單引號括起來的單個字元**義字元形式上由多個字元組成,但代表乙個字元)。
轉義字元:轉義字元是一種特殊的字元常量。轉義字元以反斜線\開頭,其含義是將反斜線後面的字元轉換成另外的含義。轉義字元主要用來表示那些用一般字元不便於表示的控制**。
注意:轉義字元雖然形式上由多個字元組成,但仍是字元常量,只代表乙個字元,使用方法與其他字元常量相同。
4)字串常量
用雙引號括起來的字串行。在c語言中沒有相應的字串變數,但是可以用乙個字元陣列來存放乙個字串常量。
c語言對字串的儲存方式為:串中的每個字元(轉義字元被看成是乙個字元)以ascii碼值的二進位制形式連續儲存,並在最後乙個字元的後面存放乙個終結符'\0'(ascii碼值為0)。
注意:在寫字串時不能加終結符'\0','\0'是系統自動加上的。
2.符號常量(用define定義、用const定義)
用識別符號代表乙個常量,稱為符號常量。
#define pi 3.14 /* #define是預處理指令,不是一條語句,行尾沒有分號 */
const double pi = 3.14; /* const是一條語句,要以分號結尾*/
(六)注釋符。注釋可出現在程式中的任何位置。程式編譯時,不對注釋作任何處理。
c語言提供了兩種注釋方法:
1)塊注釋:/*塊注釋*/ (注意:塊注釋之間不可巢狀)
2)行注釋://行注釋
C語言中 使用方式
域寬 轉換字元 乙個轉換說明以 開始,以轉換字元結尾,域寬部分是可選的,每個轉換說明對應於乙個輸出引數,改引數被轉化換成有轉換說明規定的資料格式後輸出。注 如果 後面是非轉換字元,多數編譯系統將它作為普通字元輸出。域寬說明字元 意義 減號 在指定區域按左對齊方式輸出 沒有減號時為右對齊 加號 輸出正...
C語言中使用結構體
1 先定義結構體 struct stu char name 20 long number float score 4 再定義指向結構體型別變數的指標變數 struct stu p1,p2 或者 struct stu p1,p2 定義指標變數p 1 p 2,分別指向結構體型別變數。2 在定義型別的同時...
Go語言中使用JSON
encode 將乙個物件編碼成json資料,接受乙個inte ce 物件,返回byte和error func marshal v inte ce byte,error marshal函式將會遞迴遍歷整個物件,依次按成員型別對這個物件進行編碼,型別轉換規則如下 bool型別 轉換為json的boole...