উত্তর:
হ্যাঁ. আপনি যদি না গণনার সংজ্ঞাটিতে অন্যথায় উল্লেখ না করেন তবে প্রাথমিক গণকের সর্বদা মান শূন্য থাকে এবং পরবর্তী প্রতিটি গণকের মান পূর্ববর্তী ব্যবস্থাপকের তুলনায় একটি বেশি থাকে।
[dcl.enum]
হ'ল: "যদি প্রথম গণকের কোনও আরম্ভকারী না থাকে তবে সংশ্লিষ্ট ধ্রুবকের মান শূন্য হয় an
সি 99 স্ট্যান্ডার্ড
N1265 C99 খসড়া 6.7.2.2/3 "এনুমারেশন নির্দিষ্টকরী" এ বলে
= সহ একটি গণক তার গণনার ধ্রুবককে ধ্রুবক প্রকাশের মান হিসাবে সংজ্ঞায়িত করে। প্রথম গণকের যদি না
=
থাকে তবে এর গণনা ধ্রুবকের মান 0 হয়। পরবর্তী = পরবর্তী প্রতিটি অঙ্কটি তার গণনাটির ধ্রুবককে পূর্ববর্তী অঙ্কের ধ্রুবকের মান 1 যোগ করে প্রাপ্ত ধ্রুবক অভিব্যক্তির মান হিসাবে সংজ্ঞায়িত করে। (= এর সাথে গণনার ব্যবহারের সাথে একই মান হিসাবে অন্যান্য মানগুলি নকল করে এমন মানগুলি সহ গণনা স্থির উত্পাদন করা যেতে পারে))
সুতরাং নিম্নলিখিতটি সর্বদা বাস্তবায়নগুলি মেনে চলে:
main.c
#include <assert.h>
#include <limits.h>
enum E {
E0,
E1,
E2 = 3,
E3 = 3,
E4,
E5 = INT_MAX,
#if 0
/* error: overflow in enumeration values */
E6,
#endif
};
int main(void) {
/* If unspecified, the first is 0. */
assert(E0 == 0);
assert(E1 == 1);
/* Repeated number, no problem. */
assert(E2 == 3);
assert(E3 == 3);
/* Continue from the last one. */
assert(E4 == 4);
assert(E5 == INT_MAX);
return 0;
}
সংকলন এবং চালান:
gcc -std=c99 -Wall -Wextra -pedantic -o main.out main.c
./main.out
উবুন্টু 16.04, জিসিসি 6.4.0 এ পরীক্ষিত।
এনাম ভেরিয়েবলের প্রথম মানটি যদি আরম্ভ না করা হয় তবে সি সংকলক স্বয়ংক্রিয়ভাবে মান 0 নির্ধারণ করে The
উদাহরণ:
enum months{jan,feb,mar}
ব্যাখ্যা: জানের মান 0 হবে, ফেবের মান 1 হবে, মার্চ 2 হবে।
enum months{jan=123,feb=999,mar}
ব্যাখ্যা: জানের মান হবে 123, ফেব হবে 999, মার্চ হবে 1000
enum months{jan='a',feb='s',mar}
ব্যাখ্যা: জানের মান 'এ' হবে, ফেবের 'এস' হবে, মার হবে 'টি'।
't'
নিশ্চয়তা নেই, এমন অক্ষর সেট থাকতে পারে যাতে অক্ষরগুলি ক্রমাগত বর্ণানুক্রমিক ক্রমে থাকে না
হ্যাঁ, এনাম মান বাইফেল্ট 0 থেকে শুরু করে কোনও প্ল্যাটফর্মের মূল উপাদান থেকে শুরু করুন।