溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

C語(yǔ)言中常量的示例分析

發(fā)布時(shí)間:2021-09-14 17:29:26 來(lái)源:億速云 閱讀:145 作者:小新 欄目:開(kāi)發(fā)技術(shù)

小編給大家分享一下C語(yǔ)言中常量的示例分析,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

1、字面常量

即字面意思不能改變的量。如1就是1,你不能說(shuō)讓1等于2;如人的血型有固定的幾種(A,B,O,AB);如人的性別也只分為男性,女性,以及更深?yuàn)W的一種形態(tài)。

在C語(yǔ)言中:1,3.14,‘a',“hello”…這些都叫做常量。

2、const修飾的常變量

可以通過(guò)一段代碼來(lái)理解const修飾的常變量:

int num = 10;
printf("%d\n", num);  //num=10
num = 5;
printf("%d\n", num);  //num=5

上面這段代碼中 num是一個(gè)變量,通過(guò)你給num賦新的值,num就不停的在改變。

但是當(dāng)你在數(shù)據(jù)類(lèi)型前面加上const,num就發(fā)生微妙的改變。(自己可以在編譯器上使用看看)

const int num = 10;
printf("%d\n", num);  //編譯產(chǎn)生報(bào)錯(cuò)
num = 5;
printf("%d\n", num);

當(dāng)你編譯后,結(jié)果會(huì)產(chǎn)生報(bào)錯(cuò):

C語(yǔ)言中常量的示例分析

因?yàn)榇藭r(shí)numconst修飾下已經(jīng)變成了常變量,而變量是不可以被修改的。

但是num此時(shí)不能完全叫做常量,它歸根結(jié)底還是變量。如它不能在數(shù)組定義的時(shí)候使用。

//通過(guò)定義一個(gè)數(shù)組看出問(wèn)題
//int arr[10] = { 0 };------正常的定義數(shù)組

//int num = 10;
//int arr[num] = { 0 };-----結(jié)果產(chǎn)生報(bào)錯(cuò)

//const int num = 10;
//int arr[num] = { 0 };----結(jié)果產(chǎn)生報(bào)錯(cuò)

3、#define定義的標(biāo)識(shí)符常量(也叫預(yù)處理)

這是C語(yǔ)言定義數(shù)組大小經(jīng)常用到的方法,大家可以自行使用感覺(jué)一下。

使用格式:#define <標(biāo)識(shí)符> <常量值/表達(dá)式>

#include <stdio.h>
#define MAX 10
int main()
{
 int arr[MAX] = { 0 }; //通過(guò)改變MAX的大小就可以改變數(shù)組大小
    printf("%d",MAX);  //MAX=10
 return 0;
}

下面有個(gè)思考題,大家可以思考一下結(jié)果是什么:

#include <stdio.h>
#define MAX 5+5
int main()
{
 printf("%d", 3 * MAX);
 return 0;
}

此時(shí)輸出的結(jié)果是20,而并不是30。所以要明白#define MAX 5+5,MAX并不等于10。

既然可以把一個(gè)表達(dá)式賦給一個(gè)標(biāo)識(shí)符,那我可以不可以把一些參數(shù)賦值給這個(gè)標(biāo)識(shí)符呢?

大家可以思考一下這段代碼:

#include <stdio.h>
#define Add(a,b) a+b
int main()
{
 int sum = Add(3,2);
 printf("%d\n",sum);
 return 0;
}

此時(shí),先發(fā)生sum=a+b,再發(fā)生sum=3+2,故輸出5

我們這里只是講解最基礎(chǔ)的常量問(wèn)題,故不多衍生宏定義,后面會(huì)專(zhuān)門(mén)講解宏定義相關(guān)的內(nèi)容。

4、枚舉常量

如果大家學(xué)過(guò)結(jié)構(gòu)體,枚舉的定義與其比較相似。

enum的使用方法:

在定義enum的同時(shí),聲明變量:

enum Day {
 Mon,Tue,Wed,Thus,Fri,Sat,Sun
}Workday;

定義完enum之后再聲明變量:

enum Day {
 Mon,Tue,Wed,Thus,Fri,Sat,Sun
};
enum Day Workday;

定義匿名的枚舉變量:(如果整個(gè)程序只用一個(gè)枚舉,則enum后面不必加標(biāo)識(shí)符,但是不能再定義枚舉結(jié)構(gòu))

enum {
 Mon,Tue,Wed,Thus,Fri,Sat,Sun
}Workday;

通過(guò)一段碼來(lái)為大家剖析枚舉結(jié)構(gòu)的一些細(xì)節(jié):

#include <stdio.h>
enum Day {   //enum--枚舉類(lèi)型關(guān)鍵字  Day--枚舉類(lèi)型標(biāo)簽  enum Day--枚舉的類(lèi)型
 Mon=1,
 Tue,   //{ }里面的為枚舉值
 Wed,
 Thus,
 Fri,
 Sat,
 Sun
}Workday;   //Workday--枚舉變量

這里做一些說(shuō)明:

  • 如果Mon不做賦值,則默認(rèn)為0,后面依次增加,如Tue=1,Wed=2…

  • 如果Mon賦值為3,則后面也依次增加,如Tue=4,Wed=5…

  • 如果是從中間賦值,如Thus=7,則Thus后面的依次增加,之前的從Mon開(kāi)始則從0

  • 開(kāi)始增加

  • 枚舉值是常量,不是變量。不能在程序中用賦值語(yǔ)句再對(duì)它賦值。

  • 如:Tue=7,Sun=Wed。這些都是錯(cuò)誤的。

  • 只能把枚舉值賦給枚舉變量,而不能將該枚舉值的數(shù)值賦給枚舉變量

如:Workday=Tue----正確

Workday=2----錯(cuò)誤

以上是“C語(yǔ)言中常量的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI