C語言變量和常量

變量和常量

標識符

在計算機高級語言中,用來對變量、符號常量、函數、數組、類型等命名的有效字符序列統稱為標識符(identifier)。
C語言規定標識符:

  • 只能由字母,數字和下劃線組成。
  • 不能以數字開頭。
  • 字母區分大小寫。

不能與關鍵字和保留字重復。
在傳統C語言用法中,一般常量都使用大寫字母,變量都使用小寫字母。

變量

聲明變量

所有變量都必須先聲明后使用,盡管某些變量可以通過上下文隱式地聲明。
聲明變量的一般形式:

        數據類型 變量名列表;

一個聲明指定一種變量類型,后面所帶的變量表可以包含一個或多個該類型的變量。

short int a,b,i;  //有符號短整型變量
unsigned char c;  //無符號字符型變量

一個聲明語句中的多個變量可以拆開在多個聲明語句中聲明。

short int a;
short int b;
short int i;
unsigned char c;

在聲明變量后,應對該變量進行初始化。
初始化變量就是為變量賦一個初始值,只需在變量名后面加上賦值運算符=和應賦給變量的值。

short int a;
a = 10;
unsigned char c;
c = 'A';

可以在聲明的同時對變量進行初始化。

short int a = 10;
unsigned char c = 'A';

不應將初始化的變量和未初始化的變量放在同一條聲明中。

short int a,b = 10; //a未初始化,b初始化為10

常量

在程序運行過程中,其值不能被改變的量稱為常量。
從字面形式上即可識別的常量稱為“字面常量”或“直接常量”,即字面常量是沒有名字的不變量。

整數常量

可以把整數常量寫作十進制、八進制和十六進制。

  • 十進制:常量包含 0~9 中的數字,但是一定不能以 0 開頭。
  • 八進制:常量包含 0~7 中的數字,必須以 0 開頭。
  • 十六進制:常量包含 0~9 中的數字和 a~f 中的字母,總是以 0x 開頭。

十六進制整數常量中的字母可以是大寫字母也可以是小寫字母。
整數常量的類型通常為 int,如果整數太大超出了范圍,則轉換成其它范圍足夠大的整數類型。
可以強制編譯器把整數常量作為長整數,需在后邊加上字母L(或l)。
可以強制編譯器把整數常量作為雙長整數,需在后邊加上字母LL(或ll)。
可以指明整數常量是無符號的,需在常量后邊加上字母U(或u)。

浮點型常量

浮點型常量可以寫作為科學計數形式或指數形式。

  • 科學計數形式:十進制小數。
  • 指數形式:需要在指數數值前放置字母E(或e);eN(或e+N)表示 10 的 N 次方,e-N表示 10 的負 N 次方。

默認情況下,浮點型常量都以雙精度數的形式存儲。
為了說明浮點型常量是單精度的,需在常量后邊加上字母F(或f)。
為了說明浮點型常量是擴展精度的,需在常量后邊加上字母L(或l)。

字符常量

單引號括起來的單個字符稱為字符常量。
C語言字符常量通常以ASCII碼值的形式存儲。
常用的字符常量ASCII碼值:

  • 大寫字母'A'ASCII碼值為 65。
  • 小寫字母'a'ASCII碼值為 97。
轉義序列

\開頭的字符序列稱為轉義字符。
C語言規定的轉義序列包括:

轉義字符描述ASCII 碼值
\a響鈴0x07
\n換行0x0a
\t水平制表(跳到下一個tab位置)0x09
\b退格,將當前位置移到前一列0x08
\r回車,將當前位置移到本行開頭0x0d
\f換頁,將當前位置移到下頁開頭0x0c
\v豎向跳格0x0b
\\反斜杠字符0x5c
\’單引號字符0x27
\"雙引號字符0x22
\0空字符0x00
\ddd位任意八進制值nnn
\xhh位任意十六進制值nn

宏定義

簡單的宏

符號常量:用#define指令,指定用一個符號名稱代表一個常量。
簡單的宏(C標準中稱為對象式宏)的定義有如下格式:

				#define 標識符 替換列表

宏的替換列表可以包括標識符、關鍵字、數值常量、字符常量、字符串字面量、操作符和排列。
當預處理器遇到一個宏定義時,會做一個“標識符”代表“替換列表”的記錄。在文件后面的內容中,不管標識符在哪里出現,預處理器都會用替換列表代替它。
例:

#define N 100
#define PI 3.1419
#define CR '\r'
#define EOS '\0'

帶參數的宏

帶參數的宏(也稱為函數式宏)的定義有如下格式:

		#define 標識符(參數列表) 替換列表

在宏的名字和左括號之間必須沒有空格。如果有空格,預處理器會認為是在定義一個簡單的宏。
帶參數的宏可以包含空的參數列表。
例:

#define MAX(x,y)    ((x)>(y))?(x):(y))
#define IS_EVEN(n)    ((n)%2==0)  

現在如果后面的程序中有如下語句:

i = MAX(j + k,m - n);

預處理器會將這些行替換為:

i = ( (j+k) > (m-n) ? (j+k) : (m-n) );

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

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

相關文章

一站式企業快遞管理平臺使用教程

因公寄件在企業中重要性的提升,催生出了企業快遞管理平臺。為什么這么說呢? 隨著經濟和快遞行業的發展,因公寄件在企業中成了一件“常事”,寄文件合同、發票、節假日慰問品、樣品等等,這種情況之下,因公寄件…

Vue3 設置點擊后滾動條移動到固定的位置

需求&#xff1a; 點擊不通過按鈕&#xff0c;顯示紅框中表單&#xff0c;且滾動條滾動到底部 &#xff08;顯示紅框中表單默認不顯示&#xff09; <el-button click"onApprovalPass">不通過</el-button> <div class"item" v-if"app…

vue打包優化

vue.config.js文件中 module.exports defineConfig({ productionSourceMap: false,//去掉mapjs文件 });

pwn:[SWPUCTF 2021 新生賽]nc簽到

題目 linux環境下顯示為 配合題目的下載附件&#xff0c;發現過濾了一些&#xff0c;一旦輸入這些會自動關閉程序 ls被過濾了&#xff0c;可以使用l\s cat和空格都被過濾了&#xff0c;cat可以換成c\at ,空格可以換成$IFS$9

<HarmonyOS第一課>1·運行Hello World【課后考核】

【習題】運行Hello World工程 判斷題 1.DevEco Studio是開發HarmonyOS應用的一站式集成開發環境。 正確(True) 2.main_pages.json存放頁面page路徑配置信息。 正確(True) 單選題 1.在stage模型中&#xff0c;下列配置文件屬于AppScope文件夾的是&#xff1f;&#xff08;…

Youtube0播放?運營教你需要的技巧、策略與工具!

對于有跨境意向的內容創作者或者品牌企業來說&#xff0c;YouTube是因其巨大的潛在受眾群和商業價值成為最值得投入變現與營銷計劃的平臺。 據統計&#xff0c;98% 的美國人每月訪問 YouTube&#xff0c;近三分之二的人每天訪問。但是&#xff0c;YouTube還遠未達到過度飽和的…

酵母雙雜交服務專題(一)

酵母雙雜交系統是一種在酵母這種真核生物模型中執行的實驗方法&#xff0c;用于探索活細胞內部蛋白質間的相互作用。這種技術能夠敏感地捕捉蛋白質間的細微和短暫相互作用&#xff0c;通過檢測報告基因的表達產物來實現。作為一種高度靈敏的技術&#xff0c;酵母雙雜交系統被廣…

Spring Cloud LoadBalancer 簡單介紹與實戰

前言 本文為SpringCloud的學習筆記&#xff0c;如有錯誤&#xff0c;希望各位高手能指出&#xff0c;主要介紹SpringCloudLoadBalancer的基本概念和實戰 文章目錄 前言什么是LoadBalancer負載均衡分類服務端負載均衡客戶端負載均衡服務端負載均衡和客戶端負載均衡的優缺點 常見…

評測|PolarDB MySQL 版 Serverless

評測&#xff5c;PolarDB MySQL 版 Serverless 目錄 一、測試背景 1.1、云原生數據庫 PolarDB Serverless新架構概念 1.2、Serverless資源彈性擴縮觸發條件 二、PolarDB的Serverless能力與同類型產品進行對比 三、動態彈性升降資源的能力測試 3.1、測試資源 3.2、測試一…

ubuntu22.04在線安裝redis,可選擇版本

安裝腳本7.0.5版本 在線安裝腳本&#xff0c;默認版本號是7.0.5&#xff0c;可以根據需要選擇需要的版本進行下載編譯安裝 sudo apt-get install gcc -y sudo apt-get install pkg-config -y sudo apt-get install build-essential -y#安裝redis rm -rf ./tmp.log systemctl …

freeRTOS下載鏈接(sourceForge)

FreeRTOS Real Time Kernel (RTOS) download | SourceForge.net 文件名&#xff1a;FreeRTOSv202212.00.exe 雙擊后會自動變成這個樣子的&#xff1a; 文件夾大小&#xff1a;506M 可以看到跟那個教程里面的文件結構是一模一樣的&#xff0c;所以很可能是同一個最新版本的文件…

Linux(Centos)上使用crontab實現定時任務(定時執行腳本)

場景 Windows中通過bat定時執行命令和mysqldump實現數據庫備份&#xff1a; Windows中通過bat定時執行命令和mysqldump實現數據庫備份_mysqldump bat-CSDN博客 上面講windows中使用bat實現定時任務的方式&#xff0c;如果是在linux上可以通過crontab實現。 cron是服務名稱。…

高斯DB數據庫添加字段并添加字段注釋

個人網站 公眾號小肖學數據分析 可以使用以下SQL語句向高斯DB數據庫添加字段并添加字段注釋&#xff1a; ALTER TABLE 表名 ADD COLUMN 列名 數據類型 COMMENT 字段注釋; "表名"替換為要添加字段的表名&#xff0c;"列名"替換為要添加的字段名&#xf…

怎樣提升倫敦銀買賣技巧?

如果投資者想提升倫敦銀的買賣技巧&#xff0c;可以學習一些有用的技術分析方法。所謂技術分析&#xff0c;就是通過對行情過往價格和相關交易數據進行收集&#xff0c;用圖表的方式解讀白銀市場&#xff0c;進而預測行情未來主線走勢、判斷價格細節變化、尋找重要支撐點阻力點…

Linux系統常用的組合命令

1. 管道&#xff08;|&#xff09;&#xff1a;將一個命令的輸出傳遞給另一個命令作為輸入。例如&#xff1a; command1 | command2 在這個命令中&#xff0c;command1 的輸出會作為 command2 的輸入,直接將一個命令的輸出傳遞給另一個命令進行處理. 你可以使用 grep 來查找關…

TikTok Shop 與英國皇家郵政合作:為賣家提供“Click and Drop”服務

11 月 21 日&#xff0c;TikTok Shop 宣布與皇家郵政 建立新的合作伙伴關系 &#xff0c;為平臺上的商家推出 Click & Drop。此次合作將使各種規模的商家能夠通過將皇家郵政的 Click & Drop 與其 TikTok Shop 帳戶集成來改善其履行體驗并更有效地發出訂單&#xff0c;…

科普:多領域分布式協同仿真

分布式協同仿真是一種在分布式計算環境中進行協同工作的仿真方法。使用該方法進行協同仿真時&#xff0c;仿真任務將被分發到多個計算節點上&#xff0c;并且這些節點可以同時工作以模擬完整的系統行為。分布式協同仿真已被廣泛應用于工程、科學和軍事領域&#xff0c;以便更好…

醫保線上購藥系統:代碼驅動的醫療創新

醫保線上購藥系統&#xff0c;這是一個融合技術和醫療的創新典范。本文將通過簡單的技術代碼示例&#xff0c;為您揭示這一系統是如何通過技術驅動醫療創新&#xff0c;為用戶提供更智能、便捷的健康管理體驗的。 1. 前端界面開發 使用React框架&#xff0c;我們可以輕松構建…

深度探究數據要素市場,企業為什么要參與數據資產化建設

我國正在發展數字經濟&#xff0c;培育數字要素市場&#xff0c;推進數據市場化。在十四五數字經濟發展規劃中就已經將數據要素列為數字經濟深化發展的核心引擎。今天和大家分享關于數據要素的前世今生&#xff0c;您將了解以下知識點&#xff1a; 1.什么是數據要素&#xff1f…

可視化工作流管理流程及工具

Leangoo領歌是一款永久免費的專業的敏捷開發管理工具&#xff0c;提供端到端敏捷研發管理解決方案&#xff0c;涵蓋敏捷需求管理、任務協同、進展跟蹤、統計度量等。 Leangoo領歌上手快、實施成本低&#xff0c;可幫助企業快速落地敏捷&#xff0c;提質增效、縮短周期、加速創新…