網站首頁 編程語言 正文
生活中有一些是可變的量(比如你的年齡,身高,體重,對象)
還有一些不變的量(比如圓周率,性別,身份證號碼)[哎,這里你說性別可變啊,我們只能笑一下,哈哈]
常量的定義
常量就是一個不變的量(比如圓周率,性別,身份證號碼)
C語言中的常量和變量的定義的形式有所差異。
常量的分類
C語言中的常量分為以下以下幾種:
- 1.字面常量
- 2.const 修飾的常變量
- 3.#define 定義的標識符常量
- 4.枚舉常量
我們來演示一下
字面常量
字面常量,就是字面上就可以看出來的常量
int main() { //字面常量演示 3.14;//小數 1000;//整數 'w';//字符 "abc";字符串 return 0; }
const修飾的常變量
#define _CRT_SECURE_NO_WARNINGS #include//使用printf記得加這條代碼 int main() { //const修飾的常變量演示 int a=100;//我們等一會兒會改變它 a=10; printf("%d",a); return 0; }
運行結果:
10
當我們在int a=100前加一個const來修飾
#define _CRT_SECURE_NO_WARNINGS #includeint main() { //const修飾的常變量演示 const int a=100;//在這兒 a=10; printf("%d",a); return 0; }
運行的結果:
運行錯誤,無實際輸出
我們可以知道,const如果修飾一個變量,再給變量換一個值是不被允許的,相當于一個常量,但它還有變量的屬性,所以我們就叫它是const 修飾的常變量
為什么說它具有變量屬性呢?
我們來證明一下:
再新了解一個東西,數組,當我們來寫代碼的時候,有時候需要寫很多的變量,很麻煩,這時候我們使用數組arr[ ],(a[ ],hin[ ]都隨便,自己起一個名),在數組的[ ]中只能放常量,比如arr[5],相當于你直接定義了5個變量,里面是不能放變量的,根據這個原理我們來證明一下const 修飾的常變量是否具有變量屬性
#define _CRT_SECURE_NO_WARNINGS #includeint main() { const int a = 100; int arr[10] = {0}; return 0; }
可正常運行
#define _CRT_SECURE_NO_WARNINGS #includeint main() { const int a = 100; int arr[a] = {0}; return 0; }
運行結果:
出現了錯誤,說明const 修飾的常變量具有變量屬性
我有一個大佬(我認為的大佬,哈哈哈)是這樣理解的:假設變量是一個空間,常量是一個實際值,變量用來容納常量,const只是鎖定了值,但是并不是把空間變成數值
#define 定義的標識符常量
#define _CRT_SECURE_NO_WARNINGS #include#define MAX 100//here int main() { printf("%d\n",MAX); int a=MAX; printf("%d\n",a); return 0; }
運行的結果:
100
100
可以看出來,MAX被定義為了100,無論是直接打印還是給變量一個值都可以,想用的時候就可以拿出來使用,這個MAX就是標識符常量,也就是#define 定義的標識符常量。(#define也是可以定義一個字符串的,不局限于數字)
枚舉常量
我生活中一些值是可以一一列舉出來的,比如性別,我們初步來了解一下,畢竟只是初始c語言,
#includeenum Sex { MALE,//男 FEMALE,//女 SECRET//不確定 }; //enum Sex未來的可能取值就是MALE,FEMALE,SECRET,它們三個就是枚舉常量 int main() { //枚舉常量演示 printf("%d\n", MALE); printf("%d\n", FEMALE); printf("%d\n", SECRET); //注:枚舉常量的默認是從0開始,依次向下遞增1的
注意,這里enum Sex里面三個枚舉常量并不開辟空間,而且也是不能改變的,改變就會報錯
原文鏈接:https://blog.csdn.net/iqrmshrt/article/details/123981168
相關推薦
- 2021-11-23 Flutter?+?Idea?環境搭建及配置教程_Android
- 2022-12-13 python3.x?zip用法小結_python
- 2022-12-22 C++運算符重載與多繼承及二義性詳解_C 語言
- 2022-08-14 Oracle中dbms_output.put_line的用法實例_oracle
- 2023-07-02 解密Python中的作用域與名字空間_python
- 2022-08-25 Asp.net?core中依賴注入的實現_實用技巧
- 2022-01-29 android打包證書生成
- 2022-12-11 Go?模塊在下游服務抖動恢復后CPU占用無法恢復原因_Golang
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支