
- C 程式設計教程
- C - 首頁
- C 語言基礎
- C - 概述
- C - 特性
- C - 歷史
- C - 環境搭建
- C - 程式結構
- C - Hello World
- C - 編譯過程
- C - 註釋
- C - 詞法單元
- C - 關鍵字
- C - 識別符號
- C - 使用者輸入
- C - 基本語法
- C - 資料型別
- C - 變數
- C - 整數提升
- C - 型別轉換
- C - 型別強制轉換
- C - 布林值
- C語言中的常量和字面量
- C - 常量
- C - 字面量
- C - 轉義序列
- C - 格式說明符
- C 語言中的運算子
- C - 運算子
- C - 算術運算子
- C - 關係運算符
- C - 邏輯運算子
- C - 位運算子
- C - 賦值運算子
- C - 一元運算子
- C - 自增和自減運算子
- C - 三元運算子
- C - sizeof 運算子
- C - 運算子優先順序
- C - 其他運算子
- C 語言中的決策
- C - 決策
- C - if 語句
- C - if...else 語句
- C - 巢狀 if 語句
- C - switch 語句
- C - 巢狀 switch 語句
- C 語言中的迴圈
- C - 迴圈
- C - while 迴圈
- C - for 迴圈
- C - do...while 迴圈
- C - 巢狀迴圈
- C - 無限迴圈
- C - break 語句
- C - continue 語句
- C - goto 語句
- C 語言中的函式
- C - 函式
- C - 主函式
- C - 按值呼叫函式
- C - 按引用呼叫函式
- C - 巢狀函式
- C - 可變引數函式
- C - 使用者自定義函式
- C - 回撥函式
- C - 返回語句
- C - 遞迴
- C 語言中的作用域規則
- C - 作用域規則
- C - 靜態變數
- C - 全域性變數
- C 語言中的陣列
- C - 陣列
- C - 陣列的特性
- C - 多維陣列
- C - 將陣列傳遞給函式
- C - 從函式返回陣列
- C - 變長陣列
- C 語言中的指標
- C - 指標
- C - 指標和陣列
- C - 指標的應用
- C - 指標運算
- C - 指標陣列
- C - 指向指標的指標
- C - 將指標傳遞給函式
- C - 從函式返回指標
- C - 函式指標
- C - 指向陣列的指標
- C - 指向結構體的指標
- C - 指標鏈
- C - 指標與陣列
- C - 字元指標和函式
- C - NULL 指標
- C - void 指標
- C - 懸空指標
- C - 解引用指標
- C - 近、遠和巨型指標
- C - 指標陣列的初始化
- C - 指標與多維陣列
- C 語言中的字串
- C - 字串
- C - 字串陣列
- C - 特殊字元
- C 結構體和聯合體
- C - 結構體
- C - 結構體和函式
- C - 結構體陣列
- C - 自引用結構體
- C - 查詢表
- C - 點 (.) 運算子
- C - 列舉 (enum)
- C - 結構體填充和壓縮
- C - 巢狀結構體
- C - 匿名結構體和聯合體
- C - 聯合體
- C - 位域
- C - typedef
- C 語言中的檔案處理
- C - 輸入 & 輸出
- C - 檔案 I/O (檔案處理)
- C 預處理器
- C - 預處理器
- C - 編譯指示
- C - 預處理器運算子
- C - 宏
- C - 標頭檔案
- C 語言中的記憶體管理
- C - 記憶體管理
- C - 記憶體地址
- C - 儲存類別
- 其他主題
- C - 錯誤處理
- C - 可變引數
- C - 命令執行
- C - 數學函式
- C - static 關鍵字
- C - 隨機數生成
- C - 命令列引數
- C 程式設計資源
- C - 問答
- C - 快速指南
- C - 備忘單
- C - 有用資源
- C - 討論
C - 字面量
在計算機程式設計術語中,“字面量”是指要賦值給變數的值的文字表示。
在 C 語言中,您可以透過兩種方式將值賦給變數:
- 使用字面量表示
- 使用表示式
在 C 語言中,變數的初始化如下所示:
int x = 10;
另一方面,透過為變數賦值表示式的結果來間接初始化變數,如下所示:
int x = 10; int y = x*2;
在第一種情況下,10 是賦值給“x”的整數字面量。在第二種情況下,“x*2”表示式的結果被賦值給“y”。
因此,字面量是直接在原始碼中表示的某種資料型別的值。通常,字面量用於設定變數的值。
字面量本身並不構成任何程式設計元素。不同的表示法用於表示不同資料型別的數值。
C 語言中的整數字面量
在上面的例子中,10 是一個整數字面量。用數字 0 到 9 表示的正或負整數,沒有小數部分,是**十進位制整數字面量**。它必須在給定作業系統平臺的可接受範圍內。
下面的例子將十進位制字面量賦值給**int**變數:
int x = 200; int y = -50;
整數字面量也可以帶有後綴,它是“U”(表示無符號)和“L”(表示長整型)的組合。字尾可以是大寫或小寫,並且可以按任何順序排列。
int c = 89U; long int d = 99998L;
C 語言允許您以八進位制和十六進位制數製表示整數。對於八進位制的字面量表示,請在數字前加 0(確保該數字僅使用八進位制數字,從 0 到 7)。
對於十六進位制字面量,請在數字前加 0x 或 0X。十六進位制數必須包含 0 到 9 和 A 到 F(或 a 到 f)的符號。
示例
請看下面的例子:
#include <stdio.h> int main(){ int oct = 025; int hex = 0xa1; printf("Octal to decimal: %d\n", oct); printf("Hexadecimal to decimal: %d\n", hex); }
輸出
執行此程式碼後,您將獲得以下輸出:
Octal to decimal: 21 Hexadecimal to decimal: 161
現代 C 編譯器也允許您將整數表示為二進位制數,為此您需要新增**0b**字首。
示例
請看下面的例子:
#include <stdio.h> int main(){ int x = 0b00010000; printf("binary to decimal: %d", x); }
輸出
執行程式碼並檢查其輸出:
binary to decimal: 16
以下是一些整數字面量的示例:
212 /* valid */ 215u /* valid */ 0xFeeL /* valid */ 078 /* invalid: 8 is not an octal digit */ 032UU /* invalid: cannot repeat a suffix */
以下是一些其他各種型別整數字面量的示例:
85 /* decimal */ 0213 /* octal */ 0x4b /* hexadecimal */ 30 /* int */ 30u /* unsigned int */ 30l /* long */ 30ul /* unsigned long */
C 語言中的浮點字面量
C 語言中的浮點字面量是一個實數,具有整數部分和小數部分,在使用的編譯器可接受的範圍內,並以數字、小數點和可選的指數符號 (e 或 E) 表示。
浮點字面量通常用於在 C 語言中初始化或設定 float 或 double 變數的值。
示例
以下賦值示例使用帶小數點的浮點字面量,小數點將整數部分和小數部分分開:
#include <stdio.h> int main(){ float x = 10.55; float y = -1.333; printf("x and y are: %f, %f", x, y); }
輸出
您將得到以下輸出:
x and y are: 10.550000, -1.333000
高精度浮點字面量可以使用指數符號“e”或“E”來表示。這稱為**浮點字面量的科學記數法**。
在表示十進位制形式時,必須包含小數點、指數或兩者兼有。在表示指數形式時,必須包含整數部分、小數部分或兩者兼有。
示例
請看下面的例子:
#include <stdio.h> int main(){ float x = 100E+4; float y = -1.3E-03; printf("x: %f\n", x); printf("y: %f\n", y); }
輸出
執行此程式碼時,它將產生以下輸出:
x: 1000000.000000 y: -0.001300
以下是一些浮點字面量的示例:
3.14159 /* valid */ 314159E-5L /* valid */ 510E /* invalid: incomplete exponent */ 210f /* invalid: no decimal or exponent */ .e55 /* invalid: missing integer or fraction */
C 語言中的字元字面量
C 語言中的字元字面量是用單引號括起來的單個字元。請注意,C 語言只識別直引號。因此,使用**'**來構成字元字面量,而不是**‘**)。這是一個例子:
char x = 'I';
字元字面量通常賦值給佔用單個位元組的 char 變數。使用**%c**格式說明符輸出字元。使用**%d**,您將獲得字元的 ASCII 值。
示例
請看下面的例子:
#include <stdio.h> int main(){ char x = 'I'; printf("x: %c\n", x); printf("x: %d\n", x); }
輸出
執行程式碼並檢查其輸出:
x: I x: 73
C 語言中的轉義序列
C 語言定義了許多轉義序列,它們是一系列以“\”開頭並附加有備選含義的字元。
即使轉義序列由多個字元組成,它也放在單引號內。轉義序列產生單個不可列印字元的效果。例如,**'\n'**是一個轉義序列,它表示換行符,其效果與按下 Enter 鍵相同。
示例
請看下面的例子:
#include <stdio.h> int main(){ char x = 'I'; char y = 'J'; printf("x: %c\ny: %c", x,y); }
輸出
在這裡,您將獲得此輸出:
x: I y: J
我們將在後面的章節中學習更多關於轉義序列的內容。
字元字面量也可以是字元的 UNICODE 表示。這樣的字面量開頭是**\u**。
示例
請看下面的例子:
#include <stdio.h> int main(){ char x = '\u09A9'; printf("x: %c\n", x); printf("x: %d\n", x); }
輸出
執行此程式碼後,您將獲得以下輸出:
x: ⌐ y: -87
C 語言中的字串字面量
用雙引號括起來的一系列字元構成一個字串字面量。C 語言不提供字串變數。相反,我們需要使用 char 型別的陣列來儲存字串。
示例
請看下面的例子:
#include <stdio.h> int main(){ char arr[] = "Hello World"; printf("arr: %s", arr); }
輸出
執行程式碼並檢查其輸出:
arr: Hello World
字串字面量可以包含普通字元、轉義序列和 Unicode 字元。例如:
char arr[] = "Hello \ World";
您還可以透過將元素放在花括號 { 和 } 內來表示陣列的字面量。例如
int arr[] = {10, 20, 30, 40};
類似地,花括號也可以用於結構體值的字面量表示。例如:
struct marks { int phy; int che; int math }; struct marks m1 = {50, 60, 70};
我們將在本教程的後面詳細學習陣列和結構體。