<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # 12.C語言枚舉類型 在實際問題中,有些變量的取值被限定在一個有限的范圍內。例如,一個星期內只有七天,一年只有十二個月,一個班每周有六門課程等等。如果把這些量說明為整型,字符型或其它類型顯然是不妥當的。為此,C語言提供了一種稱為“枚舉”的類型。在“枚舉”類型的定義中列舉出所有可能的取值,被說明為該“枚舉”類型的變量取值不能超過定義的范圍。 應該說明的是,枚舉類型是一種基本數據類型,而不是一種構造類型,因為它不能再分解為任何基本類型。 ## 枚舉類型的定義和枚舉變量的說明 1) 枚舉的定義 枚舉類型定義的一般形式為: ? ? enum ?枚舉名{ 枚舉值表 }; 在枚舉值表中應羅列出所有可用值。這些值也稱為枚舉元素。 例如,該枚舉名為weekday,枚舉值共有7個,即一周中的七天。凡被說明為weekday類型變量的取值只能是七天中的某一天。 2) 枚舉變量的說明 如同結構和聯合一樣,枚舉變量也可用不同的方式說明,即先定義后說明,同時定義說明或直接說明。設有變量a、b、c被說明為上述的weekday,可采用下述任一種方式: ? ? enum weekday{ sun,mou,tue,wed,thu,fri,sat }; ? ? enum weekday a,b,c; 或者為: ? ? enum weekday{ sun,mou,tue,wed,thu,fri,sat }a,b,c; 或者為: ? ? enum { sun,mou,tue,wed,thu,fri,sat }a,b,c; ## 枚舉類型變量的賦值和使用 枚舉類型在使用中有以下規定。 1) 枚舉值是常量,不是變量。 不能在程序中用賦值語句再對它賦值。例如對枚舉weekday的元素再作以下賦值: ? ? sun=5; ? ? mon=2; ? ? sun=mon; 都是錯誤的。 2) 枚舉元素本身由系統定義了一個表示序號的數值,從0開始順序定義為0,1,2…。 如在weekday中,sun值為0,mon值為1,…,sat值為6。 【例11-10】 ~~~ main(){ enum weekday{ sun,mon,tue,wed,thu,fri,sat } a,b,c; a=sun; b=mon; c=tue; printf("%d,%d,%d",a,b,c); } ~~~ 說明:只能把枚舉值賦予枚舉變量,不能把元素的數值直接賦予枚舉變量。如: ??? a=sum; ? ? b=mon; 是正確的。而: ??? a=0; ? ? b=1; 是錯誤的。如一定要把數值賦予枚舉變量,則必須用強制類型轉換。如: ??? a=(enum weekday)2; 其意義是將順序號為2的枚舉元素賦予枚舉變量a,相當于: ??? a=tue; 還應該說明的是枚舉元素不是字符常量也不是字符串常量,使用時不要加單、雙引號。 【例11-11】 ~~~ main(){ enum body{ a,b,c,d } month[31],j; int i; j=a; for(i=1;i<=30;i++){ month[i]=j; j++; if (j>d) j=a; } for(i=1;i<=30;i++){ switch(month[i]){ case a:printf(" %2d %c\t",i,'a'); break; case b:printf(" %2d %c\t",i,'b'); break; case c:printf(" %2d %c\t",i,'c'); break; case d:printf(" %2d %c\t",i,'d'); break; default:break; } } printf("\n"); } ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看