C 語言基礎(chǔ)之初識 C 語言常量
C語言中的常量分為以下幾種:
- 字面常量
- const修飾的常變量
- #define定義的標(biāo)識符常量
- 枚舉常量
1、字面常量
即字面意思不能改變的量。如1就是1,你不能說讓1等于2;如人的血型有固定的幾種(A,B,O,AB);如人的性別也只分為男性,女性,以及更深奧的一種形態(tài)。
在C語言中:1,3.14,‘a',“hello”…這些都叫做常量。
2、const修飾的常變量
可以通過一段代碼來理解const修飾的常變量:
int num = 10;
printf("%d\n", num); //num=10
num = 5;
printf("%d\n", num); //num=5
上面這段代碼中 num是一個變量,通過你給num賦新的值,num就不停的在改變。
但是當(dāng)你在數(shù)據(jù)類型前面加上const,num就發(fā)生微妙的改變。(自己可以在編譯器上使用看看)
const int num = 10;
printf("%d\n", num); //編譯產(chǎn)生報錯
num = 5;
printf("%d\n", num);
當(dāng)你編譯后,結(jié)果會產(chǎn)生報錯:

因為此時num在const修飾下已經(jīng)變成了常變量,而變量是不可以被修改的。
但是num此時不能完全叫做常量,它歸根結(jié)底還是變量。如它不能在數(shù)組定義的時候使用。
//通過定義一個數(shù)組看出問題
//int arr[10] = { 0 };------正常的定義數(shù)組
//int num = 10;
//int arr[num] = { 0 };-----結(jié)果產(chǎn)生報錯
//const int num = 10;
//int arr[num] = { 0 };----結(jié)果產(chǎn)生報錯
3、#define定義的標(biāo)識符常量(也叫預(yù)處理)
這是C語言定義數(shù)組大小經(jīng)常用到的方法,大家可以自行使用感覺一下。
使用格式:#define <標(biāo)識符> <常量值/表達式>
#include <stdio.h>
#define MAX 10
int main()
{
int arr[MAX] = { 0 }; //通過改變MAX的大小就可以改變數(shù)組大小
printf("%d",MAX); //MAX=10
return 0;
}
下面有個思考題,大家可以思考一下結(jié)果是什么:
#include <stdio.h>
#define MAX 5+5
int main()
{
printf("%d", 3 * MAX);
return 0;
}
此時輸出的結(jié)果是20,而并不是30。所以要明白#define MAX 5+5,MAX并不等于10。
既然可以把一個表達式賦給一個標(biāo)識符,那我可以不可以把一些參數(shù)賦值給這個標(biāo)識符呢?
大家可以思考一下這段代碼:
#include <stdio.h>
#define Add(a,b) a+b
int main()
{
int sum = Add(3,2);
printf("%d\n",sum);
return 0;
}
此時,先發(fā)生sum=a+b,再發(fā)生sum=3+2,故輸出5
我們這里只是講解最基礎(chǔ)的常量問題,故不多衍生宏定義,后面會專門講解宏定義相關(guān)的內(nèi)容。
4、枚舉常量
如果大家學(xué)過結(jié)構(gòu)體,枚舉的定義與其比較相似。
enum的使用方法:
在定義enum的同時,聲明變量:
enum Day {
Mon,Tue,Wed,Thus,Fri,Sat,Sun
}Workday;
定義完enum之后再聲明變量:
enum Day {
Mon,Tue,Wed,Thus,Fri,Sat,Sun
};
enum Day Workday;
定義匿名的枚舉變量:(如果整個程序只用一個枚舉,則enum后面不必加標(biāo)識符,但是不能再定義枚舉結(jié)構(gòu))
enum {
Mon,Tue,Wed,Thus,Fri,Sat,Sun
}Workday;
通過一段碼來為大家剖析枚舉結(jié)構(gòu)的一些細節(jié):
#include <stdio.h>
enum Day { //enum--枚舉類型關(guān)鍵字 Day--枚舉類型標(biāo)簽 enum Day--枚舉的類型
Mon=1,
Tue, //{ }里面的為枚舉值
Wed,
Thus,
Fri,
Sat,
Sun
}Workday; //Workday--枚舉變量
這里做一些說明:
- 如果Mon不做賦值,則默認為0,后面依次增加,如Tue=1,Wed=2…
- 如果Mon賦值為3,則后面也依次增加,如Tue=4,Wed=5…
- 如果是從中間賦值,如Thus=7,則Thus后面的依次增加,之前的從Mon開始則從0
- 開始增加
- 枚舉值是常量,不是變量。不能在程序中用賦值語句再對它賦值。
- 如:Tue=7,Sun=Wed。這些都是錯誤的。
- 只能把枚舉值賦給枚舉變量,而不能將該枚舉值的數(shù)值賦給枚舉變量
如:Workday=Tue----正確
Workday=2----錯誤
關(guān)于枚舉的更多東西,后面再做分享。希望大家喜歡。
到此這篇關(guān)于C 語言基礎(chǔ)之初識 C 語言常量的文章就介紹到這了,更多相關(guān) C 語言常量內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
基于Matlab實現(xiàn)多目標(biāo)粘液霉菌算法的示例代碼
多目標(biāo)粘液霉菌算法(MOSMA),這是最近開發(fā)的粘液霉菌算法(SMA)的多目標(biāo)變體,用于處理工業(yè)中的多目標(biāo)優(yōu)化問題。本文將用Matlab實現(xiàn)這一算法,需要的可以參考一下2022-05-05
Qt利用QScroller實現(xiàn)home界面滑動效果
這篇文章主要為大家詳細介紹了Qt如何利用QScroller實現(xiàn)home界面滑動效果,文中的實現(xiàn)過程講解詳細,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2022-11-11
一文掌握C++ const與constexpr及區(qū)別
C++ 11標(biāo)準中,const 用于為修飾的變量添加“只讀”屬性而 constexpr關(guān)鍵字則用于指明其后是一個常量,編譯器在編譯程序時可以順帶將其結(jié)果計算出來,而無需等到程序運行階段,這樣的優(yōu)化極大地提高了程序的執(zhí)行效率,本文重點介紹C++ const與constexpr區(qū)別介紹,一起看看吧2024-02-02

