在程式當中,我們有時會處理一些有限的資料,比如說月份只能取1~12,星期一般取0~6,超出限制的資料不但沒有意義,有時還會造成程式的邏輯錯誤
我們可以通過定義列舉(enum)型別來自定義乙個有限資料的整數資料型別
比如說乙個程式通過定義年月日的數字,來輸出乙個日期字串
#include
輸出
這是乙個合理並且合法的資料,但是假如我們輸入的資料在合理範圍之外那麼輸出的內容就會有問題
我們知道13月是不存在的,這裡的資料不合理,但是並沒有語法錯誤,出現了乙個合法但是不合理的資料,因此我們使用int型別來處理月份資料有一定的風險
我們可以使用巨集定義來解決這個問題
#include
這裡我們定義了12個巨集常量,然後使用巨集常量來給變數賦值
可以解決問題,但是定義的巨集常量需要相當多的**
c語言當中的列舉(enum)就是來解決這個問題的
enum 《列舉型別名》
列舉和結構體類似,定義了乙個列舉就相當於定義了乙個新的資料型別,只不過這個型別有自己的特點
上面的例子如果使用列舉就可以這樣寫
這裡的 enum month_t 就是我們自己定義的乙個新型別,儲存的資料任然是整數,只不過每個資料都被我們定義了乙個名字,month是乙個enum month_t型別的變數被賦值為dec也就是12
在定義列舉的時候,可以省略給具體的資料名賦值,會自動的給每個資料名從0開開始的整數值
這裡的列舉資料a,b,c,d,e被預設的賦值0,1,2,3,4
也可以指定列舉當中的某乙個值,其他的值會自動遞增
所以之前的**還可以簡化
列舉型別可以用作switch語句當中,做為被判斷的值的型別
#include
定義乙個列舉型別season,根據值判斷季節
我們也可以把列舉型別作為結構體的成員
#include
結構體date表示乙個日期,裡面的成員包含 year(年),month(月),date(日),day(星期幾),其中月份和星期幾是使用列舉來表示的
也可以把列舉作為函式的引數和返回值
比如我們設計乙個函式返回星期期的中文表示
#include
這裡的getday函式裡面使用列舉的值作為陣列的索引(列舉值本質上也是整數),把列舉轉為漢字
大資料入門第二十五天 logstash入門
1.logstash是什麼 根據官網介紹 logstash 是開源的伺服器端資料處理管道,能夠同時 從多個 採集資料 轉換資料,然後將資料傳送到您最喜歡的 儲存庫 中。我們的儲存庫當然是 elasticsearch。屬於elasticsearch旗下產品 jruby開發,開發者曾說如果他知道有sca...
C語言 判斷
目錄 1.if語句 比較數的大小 2.if else語句 比較都兩個數的大小 3.巢狀if else 比較三個數的大小 4.級聯if else if else 計算分段函式 5.switch case 對級聯if else if else的改進 5.1 成績轉換 5.2 輸出對應的月份 完成作業 重...
C語言入門 第七周 作業02
題目內容 給定乙個n n矩陣a。矩陣a的鞍點是乙個位置 i,j 在該位置上的元素是第i行上的最大數,第j列上的最小數。乙個矩陣a也可能沒有鞍點。你的任務是找出a的鞍點。輸入格式 輸入的第1行是乙個正整數n,1 n 100 然後有n行,每一行有n個整數,同一行上兩個整數之間有乙個或多個空格。輸出格式 ...