[英]What's the difference between these two enum declarations - C?
我已經開始學習C語言,並且已經達到枚舉的目的。 基本上,枚舉是DEFINE
/ const int
的首選替代方法,對嗎?
這兩個聲明有什么區別?
#include <stdio.h>
// method 1
enum days {
Monday,
Tuesday
};
int main()
{
// method 1
enum days today;
enum days tomorrow;
today = Monday;
tomorrow = Tuesday;
if (today < tomorrow)
printf("yes\n");
// method 2
enum {Monday, Tuesday} days;
days = Tuesday;
printf("%d\n", days);
return 0;
}
當您要聲明只能接受有限范圍內相關 , 互斥值范圍內的值的變量時,應優先於#define
/ const int
枚舉。 因此,星期幾是一個很好的例子,但這將是一個不好的例子:
enum AboutMe
{
myAge = 27,
myNumberOfLegs = 2,
myHouseNumber = 54
};
回到您的代碼示例; 第一個方法聲明一個稱為enum days
的類型 。 您可以使用此類型聲明任意多個變量。
第二種方法聲明一個enum { ... }
類型為enum { ... }
變量 。 您不能聲明該類型的任何其他變量。
作為一個typenut,我會寫成第一個
typedef enum { Monday, Tuesday } days_t;
並聲明為
days_t day = Tuesday;
我發現第二種方法沒有用。
區別在於,在第一種情況下,天是枚舉的名稱。 因此,您可以通過以下方式訪問定義
enum days today;
枚舉天數=弄清楚哪個枚舉,一個名為天
今天=變量名
在第二種情況下,天是未命名枚舉的變量。
enum {Monday, Tuesday} days;
枚舉{星期一,星期二} =未命名的枚舉,因此需要使用大括號{}進行定義
天=變量名稱
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.