ค่า enum และช่วง
ควบคุมจำนวนเต็มพื้นฐาน
ค่า enum และช่วง เป็นบทเรียน C Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน C Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส C Academy มีบทเรียนทั้งหมด 4 บทเรียน
การกำหนดค่าอย่างชัดเจน
คุณไม่จำเป็นต้องใช้ลำดับค่าเริ่มต้น 0, 1, 2 คุณสามารถกำหนดจำนวนเต็มใด ๆ ให้ชื่อหนึ่งได้โดยใช้ =
วิธีนี้มีประโยชน์เมื่อค่าตัวเลขต้องตรงกับระบบภายนอก เช่น รหัสสถานะ
enum Http { OK = 200, NOT_FOUND = 404, ERROR = 500 };การพิมพ์ค่าที่กำหนดเอง
เมื่อกำหนดค่าแล้ว ตัวเลขเหล่านั้นจะเป็นค่าที่ถูกจัดเก็บและพิมพ์ออกมาอย่างตรงตัว
ในที่นี้ ชื่อ enum จะจับคู่โดยตรงกับรหัสมาตรฐาน
#include <stdio.h>
enum Http { OK = 200, NOT_FOUND = 404, ERROR = 500 };
int main(void) {
printf("%d %d\n", OK, NOT_FOUND);
return 0;
}การผสมค่าที่กำหนดเองกับค่าเริ่มต้น
หากกำหนดค่าบางส่วนและเว้นส่วนอื่นว่างไว้ ชื่อที่เว้นว่างแต่ละชื่อจะนับต่อจากค่าก่อนหน้า
ดังนั้นชื่อที่อยู่ถัดจาก = 10 จะมีค่าเป็น 11 จากนั้น 12 และต่อไปเรื่อย ๆ
#include <stdio.h>
enum N { A = 10, B, C, D = 100, E };
int main(void) {
printf("%d %d %d %d %d\n", A, B, C, D, E);
return 0;
}เริ่มต้นที่หนึ่ง
เทคนิคที่ใช้กันบ่อยคือกำหนดค่าแรกเป็น 1 แทน 0 เพื่อให้ลำดับตัวเลขตรงกับการนับแบบมนุษย์
ในที่นี้ MON มีค่าเป็น 1 ทำให้วันต่าง ๆ อยู่ในช่วง 1 ถึง 7
#include <stdio.h>
enum Day { MON = 1, TUE, WED, THU, FRI, SAT, SUN };
int main(void) {
printf("%d %d\n", MON, SUN);
return 0;
}อนุญาตให้มีค่าซ้ำกัน
ชื่อ enum สองชื่อสามารถใช้ค่าจำนวนเต็มเดียวกันได้ C ไม่ได้บังคับให้ชื่อเหล่านั้นมีค่าต่างกัน
บางครั้งใช้วิธีนี้เพื่อสร้างชื่ออื่นที่หมายถึงแนวคิดเดียวกัน
#include <stdio.h>
enum Color { RED = 1, CRIMSON = 1, BLUE = 2 };
int main(void) {
printf("%d %d\n", RED, CRIMSON);
return 0;
}ค่าติดลบ
ค่า Enum สามารถเป็นค่าติดลบได้เช่นกัน เพราะเป็นจำนวนเต็มมีเครื่องหมาย
วิธีนี้ใช้แทนรหัสข้อผิดพลาดที่ต่ำกว่าศูนย์ร่วมกับช่วงค่าศูนย์หรือค่าบวกได้
#include <stdio.h>
enum Temp { COLD = -1, NORMAL = 0, HOT = 1 };
int main(void) {
printf("%d %d %d\n", COLD, NORMAL, HOT);
return 0;
}เทคนิคตัวบอกจำนวน COUNT
หากคุณแสดงรายการโดยเริ่มจาก 0 แล้วเพิ่มชื่อสุดท้ายเข้าไป ชื่อสุดท้ายนั้นจะมีค่าเท่ากับจำนวนรายการ
เทคนิค COUNT นี้ช่วยให้ได้ขนาดโดยอัตโนมัติ แม้จะเพิ่มรายการใหม่ภายหลังก็ตาม
#include <stdio.h>
enum Fruit { APPLE, PEAR, KIWI, FRUIT_COUNT };
int main(void) {
printf("%d fruits\n", FRUIT_COUNT);
return 0;
}การใช้ Enum เป็นดัชนีอาร์เรย์
เนื่องจากค่าของชนิดแจกแจงเป็นจำนวนเต็ม จึงเหมาะอย่างยิ่งสำหรับใช้เป็นดัชนีอาร์เรย์
เมื่อใช้ร่วมกับเทคนิค COUNT คุณจะกำหนดขนาดอาร์เรย์ได้พอดีและใช้ชื่อที่อ่านเข้าใจง่ายเป็นดัชนีได้
#include <stdio.h>
enum Fruit { APPLE, PEAR, KIWI, FRUIT_COUNT };
int main(void) {
int stock[FRUIT_COUNT] = {5, 3, 8};
printf("%d\n", stock[PEAR]);
return 0;
}ชนิดข้อมูลเบื้องหลัง
ในภาษา C มาตรฐาน ค่าของชนิดแจกแจงจะถูกจัดเก็บในชนิดจำนวนเต็มที่คอมไพเลอร์เลือก โดยทั่วไปคือ int
ชนิดข้อมูลนี้มีขนาดกว้างพอที่จะเก็บค่าทุกค่าที่คุณกำหนด ดังนั้นค่าคงที่ขนาดใหญ่หรือค่าติดลบก็ยังจัดเก็บได้
#include <stdio.h>
enum Big { SMALL = 0, LARGE = 1000000 };
int main(void) {
printf("%d\n", LARGE);
return 0;
}ไม่มีการตรวจสอบช่วงค่าในตัว
C ไม่ได้ป้องกันไม่ให้คุณกำหนดค่าที่อยู่นอกชุดรายการให้กับตัวแปรชนิดแจกแจง
คำสั่งกำหนดค่าด้านล่างนี้คอมไพล์และทำงานได้ ดังนั้นคุณต้องรับผิดชอบดูแลให้ค่าอยู่ในช่วงที่ถูกต้อง
#include <stdio.h>
enum Level { LOW, MID, HIGH };
int main(void) {
enum Level x = 99;
printf("%d\n", x);
return 0;
}วนซ้ำตามช่วงค่า
เมื่อชนิดแจกแจงมีค่าตั้งแต่ 0 ถึงค่าบอกจุดสิ้นสุด COUNT คุณสามารถวนซ้ำผ่านทุกค่าได้ด้วย for อย่างง่าย
การวนซ้ำนี้จะผ่านแต่ละรายการที่กำหนดไว้จนถึงก่อนค่าจำนวนรายการ
#include <stdio.h>
enum Fruit { APPLE, PEAR, KIWI, FRUIT_COUNT };
int main(void) {
for (int f = APPLE; f < FRUIT_COUNT; f++)
printf("%d ", f);
printf("\n");
return 0;
}ตรวจสอบอย่างรวดเร็ว
ลองวิเคราะห์ค่าของชนิดแจกแจงที่ปะปนกัน
สรุป
คุณสามารถกำหนดค่าของชนิดแจกแจงอย่างชัดเจน ผสมค่าดังกล่าวกับค่าเริ่มต้น ใช้ค่าซ้ำ และใช้ค่าติดลบได้
เทคนิคใช้ COUNT เป็นค่าบอกจุดสิ้นสุดจะติดตามขนาดรายการโดยอัตโนมัติ และชนิดแจกแจงก็เหมาะอย่างยิ่งสำหรับใช้เป็นดัชนีอาร์เรย์ โปรดจำไว้ว่า C ไม่มีการตรวจสอบช่วงค่า ดังนั้นคุณต้องตรวจสอบความถูกต้องของค่าด้วยตนเอง
คำถามที่พบบ่อย
บทเรียน “ค่า enum และช่วง” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “ค่า enum และช่วง” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส C Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส C Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “ค่า enum และช่วง”
ควบคุมจำนวนเต็มพื้นฐาน คุณปฏิบัติ C Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน C Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน C Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน
บทเรียน “ค่า enum และช่วง” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน C Academy นี้ได้ไหม
ได้ บทเรียน C Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- กำหนด enum
- ค่า enum และช่วง
- ตัวแปร const
- ค่าคงที่ #define