若識廬山真面目
C語言中的常量分為以下幾種:
-
字面常量
-
const修飾的常變數
-
#define定義的識別符號常量
-
列舉常量
字面常量
即字面意思不能改變的量,如1就是1,你不能說讓1等于2;如人的血型有固定的幾種(A,B,O,AB);如人的性別也只分為男性,女性,以及更深奧的一種形態,
在C語言中:1,3.14,‘a’,“hello”…這些都叫做常量,
const修飾的常變數
可以通過一段代碼來理解const修飾的常變數:
int num = 10;
printf("%d\n", num); //num=10
num = 5;
printf("%d\n", num); //num=5
上面這段代碼中 num是一個變數,通過你給num賦新的值,num就不停的在改變,
但是當你在資料型別前面加上const,num就發生微妙的改變,(自己可以在編譯器上使用看看)
const int num = 10;
printf("%d\n", num); //編譯產生報錯
num = 5;
printf("%d\n", num);
當你編譯后,結果會產生報錯:

因為此時num在const修飾下已經變成了常變數,而變數是不可以被修改的,
但是num此時不能完全叫做常量,它歸根結底還是變數,如它不能在陣列定義的時候使用,
//通過定義一個陣列看出問題
//int arr[10] = { 0 };------正常的定義陣列
//int num = 10;
//int arr[num] = { 0 };-----結果產生報錯
//const int num = 10;
//int arr[num] = { 0 };----結果產生報錯
#define定義的識別符號常量(也叫宏定義)
這是C語言定義陣列大小經常用到的方法,大家可以自行使用感覺一下,
使用格式:#define <識別符號> <常量值/運算式>
#include <stdio.h>
#define MAX 10
int main()
{
int arr[MAX] = { 0 }; //通過改變MAX的大小就可以改變陣列大小
printf("%d",MAX); //MAX=10
return 0;
}
下面有個思考題,大家可以思考一下結果是什么:
#include <stdio.h>
#define MAX 5+5
int main()
{
printf("%d", 3 * MAX);
return 0;
}
此時輸出的結果是20,而并不是30,所以要明白#define MAX 5+5,MAX并不等于10,
既然可以把一個運算式賦給一個識別符號,那我可以不可以把一些引數賦值給這個識別符號呢?
大家可以思考一下這段代碼:
#include <stdio.h>
#define Add(a,b) a+b
int main()
{
int sum = Add(3,2);
printf("%d\n",sum);
return 0;
}
此時,先發生sum=a+b,再發生sum=3+2,故輸出5
我們這里只是講解最基礎的常量問題,故不多衍生宏定義,后面會專門講解宏定義相關的內容,
列舉常量
如果大家學過結構體,列舉的定義與其比較相似,
enum的使用方法:
1.在定義enum的同時,宣告變數:
enum Day {
Mon,Tue,Wed,Thus,Fri,Sat,Sun
}Workday;
2.定義完enum之后再宣告變數:
enum Day {
Mon,Tue,Wed,Thus,Fri,Sat,Sun
};
enum Day Workday;
3.定義匿名的列舉變數:(如果整個程式只用一個列舉,則enum后面不必加識別符號,但是不能再定義列舉結構)
enum {
Mon,Tue,Wed,Thus,Fri,Sat,Sun
}Workday;
通過一段碼來為大家剖析列舉結構的一些細節:
#include <stdio.h>
enum Day { //enum--列舉型別關鍵字 Day--列舉型別標簽 enum Day--列舉的型別
Mon=1,
Tue, //{ }里面的為列舉值
Wed,
Thus,
Fri,
Sat,
Sun
}Workday; //Workday--列舉變數
這里做一些說明:
1.如果Mon不做賦值,則默認為0,后面依次增加,如Tue=1,Wed=2…
2.如果Mon賦值為3,則后面也依次增加,如Tue=4,Wed=5…
3.如果是從中間賦值,如Thus=7,則Thus后面的依次增加,之前的從Mon開始則從0
開始增加
4.列舉值是常量,不是變數,不能在程式中用賦值陳述句再對它賦值,
如:Tue=7,Sun=Wed,這些都是錯誤的,
5.只能把列舉值賦給列舉變數,而不能將該列舉值的數值賦給列舉變數
如:Workday=Tue----正確
? Workday=2----錯誤
關于列舉的更多東西,后面再做分享,希望大家喜歡,
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/272286.html
標籤:其他
上一篇:【JAVA程式設計】基本資料型別
下一篇:小白要努力之java學習運算子
