列舉型別的定義和應用

2022-08-30 11:39:15 字數 1516 閱讀 5811

1.列舉型別定義:

type

days     =(sunday,monday,tuesday,wednesday,thursday,friday,saturday);  //列舉型別,屬於順序型別,序號從0開始

colors   =(red,yellow,blue,green,black);                               //可以同時多個列舉型別定義

//下面定義方法是錯誤的

days_e1  =('sunday','monday','tuesday','wednesday','thursday','friday','saturday');   //錯誤:列舉型別元素只能是識別符號;

days_e2  =(1,2,3,4,5,6,7);  //錯誤:列舉型別元素只能是識別符號;

colors_e1=(red,yellow,white)//錯誤:列舉型別中元素不能和其他的元素相同;

2.型別型別可以用 順數函式ord,pred,succ,low,high操作

varweek  : days;

color : colors;

temp :variant;

begin

//temp:=ord(monday);       //返回 1

//temp:=pred(tuesday);     //返回 1

//temp:=pred(sunday);      //返回 255

//temp:=succ(tuesday);     //返回 3

//temp:=succ(saturday);    //返回 7

//temp:=low(week);         //返回 0

//temp:=high(week);        //返回 6

showmessage(temp);

end;

3.列舉型別變數只能進行賦值運算和關係運算,不能進行算術運算和邏輯運算。

//合法性:

week :=sunday;

ifweek=sunday thenwrite('rest');

//不合法的:

sunday :=1;           //錯把列舉值當成變數名;

days   :=blue;       //列舉值blue不屬於列舉變數weekday的值域;

read(color);           //列舉型別變數 不能用讀語句進行賦值;

write(week); writeln(blue);//不能通過寫語句輸出列舉型別的變數值和列舉值。

4.列舉型別應用:

temp:=strtoint(edit1.text);

casetemp of

0:week:=sunday;

1:week:=monday;

2:week:=tuesday;

3:week:=wednesday;

4:week:=thursday;

5:week:=friday;

6:week:=saturday;

end;

巨集定義和列舉型別的區別

摘要 在c語言的程式設計中,我們常常需要定義一些常量,此時是採用巨集定義還是採用列舉型別呢?它們有哪些區別?本文主要 這個問題。一 作用域對比 1.1巨集定義的預設作用域為整個檔案,如果定義了巨集定義結尾的地方,作用域就到那個地方 這裡有乙個潛在的危險,如果我們的標頭檔案中包含了巨集定義,此時會導致...

enum 列舉型別定義常量及呼叫的應用舉例

目錄 列舉的宣告形式 第一種 靜態變數 第二種 含乙個值 第三種 重點關注裡面包含的靜態方法 第四種 整形舉例 測試方法 呼叫第三種 結果 本文價值最高的是 第三種 舉例 public enum str0enumpublic enum str1enum str1enum string name 包含...

用type定義的列舉型別和結構體

typedef enumgpiomode typedef gpiomode typedef是新型別名,使用它定義變數時和int a 的方式類似,gpiomode typedef gpio mode 給gpio mode賦值時,只能取列舉當中定義的值。此外,在c編譯時,對列舉按常量來處理,若沒有對列舉...