Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Numaralandırma, adlandırılmış tamsayı sabitleri kümesinden oluşur. Numaralandırma türü bildirimi, (isteğe bağlı) numaralandırma etiketinin adını verir. Ve adlandırılmış tamsayı tanımlayıcıları kümesini tanımlar ( numaralandırma kümesi, numaralandırıcı sabitleri, numaralandırıcılar veya üyeler olarak adlandırılır). Numaralandırma türünün değişkeni, bu tür tarafından tanımlanan numaralandırma kümesinin değerlerinden birini depolar.
Türdeki değişkenler enum , ifadeleri dizinlemede ve tüm aritmetik ve ilişkisel işleçlerin işlenenleri olarak kullanılabilir. Numaralandırmalar, değerlerin #define sizin için oluşturulabilmesi ve normal kapsam belirleme kurallarına uyması avantajlarıyla önişlemci yönergesine bir alternatif sağlar.
ANSI C'de, bir numaralandırıcı sabitinin değerini tanımlayan ifadeler her zaman türe sahiptir int . Bu, numaralandırma değişkeniyle ilişkili depolama alanının tek int bir değer için gereken depolama alanı olduğu anlamına gelir. Numaralandırma sabiti veya numaralandırılmış tür değeri, C dilinin tamsayı ifadesine izin istediği her yerde kullanılabilir.
Sözdizimi
enum-specifier:
enum
identifier
Tercih{enumerator-list}
enum
identifier
enumerator-list:
enumerator
enumerator-list
,
enumerator
enumerator:
enumeration-constant
enumeration-constant
=
constant-expression
enumeration-constant:
identifier
İsteğe bağlı identifier , tarafından tanımlanan numaralandırma türünü adlandırın enumerator-list. Bu tanımlayıcı genellikle liste tarafından belirtilen numaralandırmanın "etiketi" olarak adlandırılır. Tür tanımlayıcısı, burada görüldüğü gibi, terim dışı tarafından belirtilen numaralandırmanın enumerator-list etiketi olduğunu bildiriridentifier:
enum identifier
{
// enumerator-list
}
, enumerator-list numaralandırma kümesinin üyelerini tanımlar.
Bir etiketin bildirimi görünür durumdaysa, etiketi kullanan ancak atlanan enumerator-list sonraki bildirimler, önceden bildirilen numaralandırılmış türü belirtir. Etiketin tanımlı bir numaralandırma türüne başvurması ve bu numaralandırma türünün geçerli kapsamda olması gerekir. Numaralandırma türü başka bir yerde tanımlandığından enumerator-list , bu bildirimde görünmez. Numaralandırma türleri için numaralandırma typedef ve bildirimlerden türetilen türlerin bildirimleri, numaralandırma türü tanımlanmadan önce numaralandırma etiketini kullanabilir.
Bir içindeki her enumeration-constant biri enumerator-list , sabit listesi kümesinin bir değerini adlandırın. Varsayılan olarak, ilk enumeration-constant değer 0 ile ilişkilendirilir. Listede bir sonraki enumeration-constant , başka bir değerle açıkça ilişkilendirmediğiniz sürece ( constant-expression + 1 ) değeriyle ilişkilendirilir. adı enumeration-constant değeriyle eşdeğerdir.
Varsayılan değer dizisini geçersiz kılmak için kullanabilirsiniz enumeration-constant = constant-expression . Başka bir ifadeyle, içinde enumerator-listenumeration-constant görünürseenumeration-constant = constant-expression, değeri tarafından constant-expressionverilen değerle ilişkilendirilir.
constant-expression türüne sahip int olmalıdır ve negatif olabilir.
Aşağıdaki kurallar bir numaralandırma kümesinin üyeleri için geçerlidir:
Sabit listesi kümesi yinelenen sabit değerler içerebilir. Örneğin, 0 değerini aynı kümedeki ve
zeroadlınullüyeler gibi iki farklı tanımlayıcıyla ilişkilendirebilirsiniz.Numaralandırma listesindeki tanımlayıcılar aynı kapsamdaki aynı görünürlüğe sahip diğer tanımlayıcılardan ayrı olmalıdır. Bu, diğer numaralandırma listelerindeki sıradan değişken adlarını ve tanımlayıcılarını içerir.
Numaralandırma etiketleri normal kapsam belirleme kurallarına uyar. Aynı görünürlüğe sahip diğer numaralandırma, yapı ve birleşim etiketlerinden ayrı olmalıdır.
Örnekler
Bu örnekler numaralandırma bildirimlerini gösterir:
enum DAY /* Defines an enumeration type */
{
saturday, /* Names day and declares a */
sunday = 0, /* variable named workday with */
monday, /* that type */
tuesday,
wednesday, /* wednesday is associated with 3 */
thursday,
friday
} workday;
0 değeri varsayılan olarak ile saturday ilişkilendirilir. Tanımlayıcı sunday açıkça 0 olarak ayarlanır. Kalan tanımlayıcılara varsayılan olarak 1 ile 5 arasında değerler verilir.
Bu örnekte, kümesinden DAY bir değer değişkenine todayatanır.
enum DAY today = wednesday;
Sabit listesi sabitinin adı, değeri atamak için kullanılır.
DAY Numaralandırma türü daha önce bildirildiğinden yalnızca numaralandırma etiketi DAY gereklidir.
Numaralandırılmış veri türünün değişkenine açıkça bir tamsayı değeri atamak için tür ataması kullanın:
workday = ( enum DAY ) ( day_value - 1 );
Bu atama C dilinde önerilir ancak gerekli değildir.
enum BOOLEAN /* Declares an enumeration data type called BOOLEAN */
{
false, /* false = 0, true = 1 */
true
};
enum BOOLEAN end_flag, match_flag; /* Two variables of type BOOLEAN */
Bu bildirim olarak da belirtilebilir
enum BOOLEAN { false, true } end_flag, match_flag;
veya
enum BOOLEAN { false, true } end_flag;
enum BOOLEAN match_flag;
Bu değişkenleri kullanan bir örnek aşağıdaki gibi görünebilir:
if ( match_flag == false )
{
.
. /* statement */
.
}
end_flag = true;
Adsız numaralandırıcı veri türleri de bildirilebilir. Veri türünün adı atlanır, ancak değişkenler bildirilebilir. değişkeni response , tanımlanan türün bir değişkenidir:
enum { yes, no } response;