0Pricing
C Academy · บทเรียน

ค่า 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. กำหนด enum
  2. ค่า enum และช่วง
  3. ตัวแปร const
  4. ค่าคงที่ #define
← กลับไปที่ C Academy