c語(yǔ)言常量定義規(guī)則 在c語(yǔ)言中什么叫宏定義的常量?
在c語(yǔ)言中什么叫宏定義的常量?在C語(yǔ)言中,宏定義的常量是沒(méi)有以下格式定義的參數(shù)的常量:#define identifier string示例如下:#include<stdio。H>#defin
在c語(yǔ)言中什么叫宏定義的常量?
在C語(yǔ)言中,宏定義的常量是沒(méi)有以下格式定義的參數(shù)的常量:
#define identifier string
示例如下:
#include<stdio。H>#define PI 3.14//macro defined constant,即PI=3.14void main(){printf(%F”,PI)//調(diào)用宏定義常量,程序在編譯階段替換宏,即在編譯階段用3.14}
符號(hào)替換PI,用#define定義常量。符號(hào)常量必須在使用前定義。它的一般形式是:define identifier constant例如:define PI 3.14//沒(méi)有分號(hào)。Define是一個(gè)預(yù)編譯命令(預(yù)處理命令都以“#”開頭,稱為宏定義命令)。在預(yù)編譯期間,它只替換字符。符號(hào)常量并不占用內(nèi)存,它只是一個(gè)臨時(shí)符號(hào)。預(yù)編譯后,符號(hào)不存在,因此無(wú)法為符號(hào)常量指定新值。傳統(tǒng)上,符號(hào)常量的標(biāo)識(shí)符用大寫字母表示,變量的標(biāo)識(shí)符用小寫字母表示。
C語(yǔ)音中的符號(hào)常量的定義方法是什么?
在C#中定義常量有兩種方法,一種稱為靜態(tài)常量,另一種稱為動(dòng)態(tài)常量。前者由“const”定義,后者由“readonly”定義。
對(duì)于靜態(tài)常量(編譯時(shí)常量),其編寫方式如下:
public const int Max_uuvalue=10
為什么稱為靜態(tài)常量?因?yàn)樯厦娴恼Z(yǔ)句可以理解為如下(注:以下文字有誤,會(huì)有編譯錯(cuò)誤。這里只是為了方便)。
public static const int MAXuvalue=10
const定義的常量對(duì)于所有類對(duì)象都是相同的,因此您需要以靜態(tài)成員的身份訪問(wèn)const定義的常量,如果您以對(duì)象成員的身份訪問(wèn)const定義的常量,則會(huì)出現(xiàn)編譯錯(cuò)誤。此外,對(duì)于靜態(tài)常量訪問(wèn),在編譯時(shí),常量將替換為常量的值,例如:
int nvalue=max編譯后,此語(yǔ)句與以下語(yǔ)句生成的中間語(yǔ)言代碼相同。
Int nvalue=10
但是,當(dāng)使用const定義常量時(shí),對(duì)類型有許多限制。首先,此類型必須屬于值類型或字符串類型,并且此類型的初始化不能由new完成,因此struct定義的某些值類型常量不能由const定義。
與const相比,使用readonly定義常量更加靈活。它的編寫方法如下:
public readonly int Max_uuvalue=10
稱為動(dòng)態(tài)變量,因?yàn)橄到y(tǒng)為readonly定義的常量分配了空間,即它與類的其他成員有獨(dú)立的空間。此外,readonly定義的常量不僅可以在常量值中設(shè)置,還可以在類的構(gòu)造函數(shù)中設(shè)置。由于readonly定義的常量等同于類的成員,因此在使用readonly定義常量時(shí),使用const定義常量所施加的類型限制將消失,也就是說(shuō),您可以使用readonly定義任何類型的常量。