C語言---分隔符、常量、注釋、標識符、關鍵字、空格

文章目錄

  • 分隔符
  • 注釋
    • 注意
  • 標識符
    • 標識符的定義
    • 標識符的命名要求
    • 合法與非法標識符示例
  • 關鍵字
    • 關鍵字定義
    • 關鍵字一覽(按功能分類)
  • 空格
    • 一、空格的作用:分隔令牌 (Tokens)
    • 空格的使用場景
      • 必須用空格分隔的情況
      • 不能有空格的情況

分隔符

分隔符名稱主要用途
;分號語句結束符
,逗號分隔變量、參數、表達式
{ }花括號定義代碼塊(函數體、循環體、結構體等)
( )圓括號函數調用、參數列表、表達式分組、包圍條件
[ ]方括號數組聲明和索引
#井號預處理指令的開始
:冒號switch語句中的case/default標簽、位域
省略號可變參數列表

在 C 程序中,分號 ; 是語句結束符,也就是說,每個語句必須以分號結束,它表明一個邏輯實體的結束。

printf("Hello, World! \n");
return 0;

個單獨的分號也可以作為一個空語句,表示什么都不做。例如:
表示do nothing

;

核心思想:分隔符是C語言的語法膠水,它們本身沒有計算意義,但決定了代碼如何被組織和解讀。忘記使用分隔符(尤其是分號;和花括號{})是最常見的語法錯誤來源之一。

注釋

C 語言有兩種注釋方式:
以 // 開始的單行注釋,這種注釋單獨占一行。

// 單行注釋

/* */ 這種格式的注釋可以單行或多行。

/*
這是一個多行注釋
可以跨越多行
*/

注意

1、不要在注釋內嵌套注釋。
2、注釋也不能出現在字符串或字符值中,在字符串或字符值中使用和注釋語法系統的字符需要使用轉移字符。
3、注釋中盡量不要出現多個?,在部分編譯器中會報錯。

標識符

標識符是C語言中最為基礎和重要的概念之一,它是程序員用來為各種元素命名的工具。

標識符的定義

標識符是由程序員自定義的名稱,用于標識變量、函數、數組、結構體、枚舉常量等程序元素。

標識符的命名要求

1、組成字符:
只能由字母(a-z, A-Z)、數字(0-9) 和下劃線(_) 三種字符組成。字母是區分大小寫的。
2、首字符:
第一個字符必須是字母或下劃線,不能是數字。
3、不能是關鍵字:
標識符的名稱不能與C語言的關鍵字(如 int, if, for, return 等)完全相同。
4、長度限制:
C標準規定,編譯器至少需要能夠識別標識符的前 63 個字符(C99標準之前是31個)。這意味著如果兩個標識符的前63個字符完全相同,編譯器可能會將它們視為同一個標識符。但在現代編譯器中,這個限制通常不是問題,但為了可讀性和可移植性,標識符也不宜過長。

合法與非法標識符示例

合法的標識符非法的標識符原因分析
age2nd_place以數字開頭
_countmy-var包含了非法字符 -
studentNamestudent name包含了非法字符 空格
MAX_SIZEint與關鍵字 int 重名
isValida.b包含了非法字符 .
temp123hello$world包含了非法字符 $
very_long_name_123return與關鍵字 return 重名

關鍵字

關鍵字定義

關鍵字,也稱為保留字,是C語言預先定義的、具有特殊含義和用途的英文單詞。
1、你不能將它們用作標識符(如變量名、函數名)。
2、它們的功能是固定的,編譯器會根據關鍵字執行特定的操作。
3、C語言的標準定義了關鍵字的數量,不同標準版本會略有不同

關鍵字一覽(按功能分類)

功能類別關鍵字數量
數據類型char, int, float, double, void, short, long, signed, unsigned, struct, union, enum12
控制流if, else, switch, case, default, for, while, do, break, continue, return, goto, _Bool13
存儲類別auto, static, register, extern, _Thread_local5
運算符相關sizeof, const2
復雜類型與內存typedef, volatile, _Complex, _Imaginary, _Atomic5
函數說明符inline1
指針限定符restrict1
總計44

C99 新增關鍵字:
_Bool _Complex _Imaginary inline restrict
C11 新增關鍵字:
_Alignas _Alignof _Atomic _Generic _Noreturn
_Static_assert _Thread_local

空格

C語言中的空格也是一種分隔符,用于幫助編譯器區分代碼中的不同元素。它本身(在絕大多數情況下)不會影響程序的邏輯,但會極大地影響代碼的可讀性。

一、空格的作用:分隔令牌 (Tokens)

C編譯器在解析代碼時,會將其分解成一系列的“令牌”或“單詞”,例如int, main, (, ), {, printf, “Hello World”, ;等。
空格的核心作用就是用來分隔這些令牌,讓編譯器能正確理解你的代碼意圖。
代碼示例:

// 沒有空格或分隔不清(無法編譯)
intmain(void){intx=10;printf("%d",x);return0;}// 等價于(有空格,可編譯)
int main(void) { int x = 10; printf("%d", x); return 0; }

在第一行中,intmain會被編譯器視為一個整體,它不認識這個“單詞”,所以會報錯。同樣,intx也會被當成一個未知的標識符。添加空格后,int, main, int, x都被清晰地分開了,編譯器就能正確識別它們。

空格的使用場景

當兩個令牌(Keywords, Identifiers, Constants)緊挨在一起時,必須用空格(或制表符、換行符)分隔。

必須用空格分隔的情況

關鍵字和標識符之間:

int age;      // 正確:`int``age` 被空格分開
intage;       // 錯誤:編譯器會尋找名為 "intage" 的變量

標識符和標識符之間 (在聲明多個變量時,非必須用空格):

int width, height; // 正確:`width,``height` 被空格分開
int width,height;  // 逗號本身是分隔符,空格可選,但加上更清晰

不能有空格的情況

在某些結構中加入空格會導致錯誤或完全改變含義。
變量名、函數名等標識符內部:

int my variable; // 錯誤:這聲明了兩個變量 `my``variable`
int my_variable; // 正確:用下劃線連接成一個標識符

預處理指令中 # 和其后指令之間 (一些現代編譯器放寬了此限制,但傳統上不行):

# include <stdio.h> // 錯誤或警告
#include <stdio.h>  // 正確:`#` 和 `include` 之間不能有空格

運算符的組成部分之間:

+ + i    // 這是兩個 `+` 運算符
++i      // 這是一個 `++` 自增運算符

數字常量的內部:

100 000   // 錯誤:這是兩個整數 100 和 000
100000    // 正確:一個整數
// 注意:C23標準支持用單引號作為分隔符,如:100'000,但這不是空格。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/93994.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/93994.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/93994.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

創建Vue項目的不同方式及項目規范化配置

1 項目的創建與運行 1.1 基于webpack構建工具——vue-cli腳手架 1. 安裝腳手架 &#xff1a;npm i -g vue/cli # 安裝一次即可&#xff0c;之前安裝過則無需重復安裝 2. 切換到項目所在目錄 &#xff1a;cd 項目所在目錄 3. 創建項目 &#xff1a;vue create 項目名 4. 自定…

K距離間隔重排字符串 (LeetCode 358) — Swift解法 + 可運行Demo

文章目錄摘要描述解決方法分析問題和解決代碼代碼要點詳解示例測試和結果時間復雜度空間復雜度總結摘要 這道題的核心是&#xff1a;把字符串里的字符重新排一下順序&#xff0c;讓相同字符之間至少隔開 k 個位置。如果做不到&#xff0c;就返回空串。看上去像“排座位”&…

React native Navigation 詳解

Tab Navigator(標簽導航器) 概念 Tab Navigator 是 React Navigation 中用于創建底部或頂部標簽欄導航的組件。它允許用戶在不同的屏幕之間快速切換,每個標簽對應一個獨立的屏幕。 基本用法 import {createBottomTabNavigator } from @react-navigation/bottom-tabs; im…

[GraphRAG]完全自動化處理任何文檔為向量知識圖譜:AbutionGraph如何讓知識自動“活”起來?

在當今信息爆炸的時代&#xff0c;企業和研究人員面對大量非結構化文檔時&#xff0c;如何高效地提取、存儲和查詢其中的知識&#xff0c;已成為一個核心挑戰。傳統的關鍵詞檢索早已無法滿足深層次語義關聯和智能問答的需求。 每天面對成百上千份PDF論文、Excel報告、行業白皮…

模擬tomcat接收GET、POST請求

訪問&#xff1a; http://localhost:10086/mytomcatMyTomcat/ └── src/└── com/└── zhang/├── MyServer.java├── MyRequest.java├── MyResponse.java├── MyMapping.java├── MyServlet.java└── MyHttpServlet.java核心類功能說明 MyServer.java 服務…

氯化釔:科技與高性能材料的核心元素

氯化釔是釔元素的氯化物&#xff0c;廣泛應用于高性能材料、催化劑、光電技術等領域。作為稀土元素之一&#xff0c;釔因其獨特的物理和化學特性&#xff0c;在現代工業中具有重要地位&#xff0c;而氯化釔則是其中的關鍵化合物之一。氯化釔的優勢與特點1. 化學穩定性強氯化釔具…

【數據結構初階】--排序(五):計數排序,排序算法復雜度對比和穩定性分析

&#x1f618;個人主頁&#xff1a;Cx330? &#x1f440;個人簡介&#xff1a;一個正在努力奮斗逆天改命的二本覺悟生 &#x1f4d6;個人專欄&#xff1a;《C語言》《LeetCode刷題集》《數據結構-初階》 前言&#xff1a;今天這篇博客就給大家將一個計數排序&#xff0c;然乎就…

Incredibuild 新增 Unity 支持:擊破構建時間過長的痛點

任何開發過復雜 Unity 項目的團隊都會告訴你&#xff1a;構建速度已成為生產流程中的核心痛點。Unity 靈活且強大&#xff0c;但隨著項目規模擴大&#xff08;尤其是包含 3D 資源、復雜著色器和龐大內容管線的項目&#xff09;&#xff0c;構建過程會逐漸變成一項隱性成本。 多…

大數據接口 - 收入評估(社保評級)API

請求端點 {"post": "https://api.tianyuanapi.com/api/v1/JRZQ09J8?t13位時間戳" }請求頭字段名類型必填描述Access-Idstring是賬號的 Access-Id對于業務請求參數 通過加密后得到 Base64 字符串&#xff0c;將其放入到請求體中&#xff0c;字段名為 data&…

C++八股 —— 設計模式

文章目錄一、創建型模式1. 單例模式2. 工廠模式二、結構型模式1. 裝飾器模式2. 代理模式三、行為型模式1. 觀察者模式2. 策略模式一、創建型模式 1. 單例模式 C八股 —— 單例模式_c 單例模式-CSDN博客 2. 工廠模式 參考&#xff1a;【設計模式】工廠模式詳解-----簡單工廠…

在openeuler中如何使用 firewalld 開放指定端口

在 OpenEuler 中使用 firewalld 開放指定端口的操作步驟如下&#xff0c;需區分臨時開放&#xff08;重啟后失效&#xff09;和永久開放&#xff08;重啟后保留&#xff09;兩種場景&#xff1a;一、查詢端口當前狀態首先確認端口是否已開放&#xff0c;避免重復配置&#xff1…

【Java進階】Java JIT 編譯器深度解析與優化實踐

Java JIT 編譯器深度解析與優化實踐Java JIT 編譯器深度解析與優化實踐一、JIT 編譯器核心原理1. JIT 工作流程2. 熱點代碼檢測機制二、Java 8 JIT 優化升級1. 分層編譯優化2. 方法內聯增強3. 循環優化升級4. 逃逸分析增強5. 向量化支持三、JIT友好代碼設計原則1. 方法設計優化…

【本地部署問答軟件Apache Answer】Answer開源平臺搭建:cpolar內網穿透服務助力全球用戶社區構建

文章目錄前言1. 本地安裝Docker2. 本地部署Apache Answer2.1 設置語言選擇簡體中文2.2 配置數據庫2.3 創建配置文件2.4 填寫基本信息3. 如何使用Apache Answer3.1 后臺管理3.2 提問與回答3.3 查看主頁回答情況4. 公網遠程訪問本地 Apache Answer4.1 內網穿透工具安裝4.2 創建遠…

華為數通認證學習

1、華為人才認證官網&#xff0c;https://e.huawei.com/cn/talent/portal/#/ 很全面的網站&#xff0c;包含了概述、了解認證、參加考試、學習資源、認證資訊四個板塊。可以了解華為認證的整個流程、下載學習資源&#xff08;培訓教材、視頻課程等&#xff09;&#xff0c;以及…

Android-ContentProvider的跨應用通信學習總結

一、ContentProvider的概念1. ContentProvider 是什么&#xff1f;&#xff08;核心概念&#xff09;ContentProvider 是 Android 四大組件之一。它的核心職責是管理和共享應用的結構化數據。我們可以把它想象成一個應用的**“數據大使館”**。在一個國家里&#xff08;Android…

Java數據結構第二十六期:解密位圖,海量數據處理的 “空間魔法”

專欄&#xff1a;Java數據結構秘籍 個人主頁&#xff1a;手握風云 目錄 一、位圖 1.1. 概念 1.2. 面試題 1.3. 位圖的實現 1.4. 位圖的應用 一、位圖 1.1. 概念 在數據結構中&#xff0c;位圖&#xff08;也稱為位數組、位向量或位集&#xff09;是一種緊湊的方式來表示一…

芯科科技即將重磅亮相IOTE 2025深圳物聯網展,以全面的無線技術及生態覆蓋賦能萬物智聯

作為低功耗無線連接領域的創新性領導廠商&#xff0c;Silicon Labs&#xff08;亦稱“芯科科技”&#xff09;將于8月27至29日攜其最前沿的人工智能&#xff08;AI&#xff09;和物聯網&#xff08;IoT&#xff09;解決方案在深圳舉辦的IOTE 2025國際物聯網展中盛大展出。這場亞…

Linux上安裝多個JDK版本,需要配置環境變量嗎

簡短回答&#xff1a;不需要同時配置多個 JDK 的 JAVA_HOME 和 PATH&#xff0c;但你可以安裝多個版本&#xff0c;并通過靈活的方式在它們之間切換。 文章目錄? 正確做法&#xff1a;安裝多個 JDK&#xff0c;但只讓一個生效&#xff08;通過環境變量或 alternatives&#xf…

MySQL有哪些高可用方案

大家好&#xff0c;我是鋒哥。今天分享關于【MySQL有哪些高可用方案】面試題。希望對大家有幫助&#xff1b; MySQL有哪些高可用方案? 超硬核AI學習資料&#xff0c;現在永久免費了&#xff01; MySQL 高可用方案是指確保 MySQL 數據庫在面對硬件故障、網絡故障、負載過重等…

【Windows】Windows平臺基于加速地址安裝vcpkg并集成到Visual Studio 2017

基礎運行環境 啟動&#xff1a; 適用于 VS 2017 的 x64 本機工具命令提示 ninja 下載壓縮包 https://gh-proxy.com/https:/github.com/ninja-build/ninja/releases/download/v1.13.1/ninja-win.zip 直接解壓到c:/Windows (無需配置環境變量) CMake 下載安裝包 https://gh-proxy…