มีหลายวิธีในการประกาศค่าคงที่ในภาษา C และ C++ ก่อนอื่นเราต้องเข้าใจว่าค่าคงที่คืออะไร
ค่าคงที่คืออะไร?
ค่าคงที่หมายถึงค่าที่ไม่สามารถเปลี่ยนแปลงได้ ในทางการเขียนโปรแกรม ค่าคงที่คือค่าคงที่ที่กำหนดให้กับตัวแปรเพื่อไม่ให้สามารถเปลี่ยนแปลงได้โดยตัวแปรอื่นหรือองค์ประกอบใดๆ ระหว่างการทำงานของโปรแกรม ค่าคงที่สามารถเป็นชนิดข้อมูลใดก็ได้ ใช้ในการกำหนดองค์ประกอบที่ไม่เปลี่ยนแปลงของโปรแกรม มีข้อมูลหรือตัวแปรบางอย่างที่มีค่าคงที่ เช่น ค่า Pi มีค่าคงที่เป็น 3.14 จึงสามารถประกาศเป็นค่าคงที่ได้
มีหลายวิธีในการประกาศตัวแปรเป็นค่าคงที่
1. ใช้คีย์เวิร์ด const
เป็นวิธีที่ใช้บ่อยที่สุดในการทำให้ตัวแปรเป็นค่าคงที่ หากโปรแกรมพยายามเปลี่ยนค่าของตัวแปรค่าคงที่ที่ประกาศด้วย const คอมไพเลอร์จะแสดงข้อความข้อผิดพลาด
ตัวอย่าง
#include <stdio.h>
int main() {
const int value = 5;
printf("ค่าของตัวแปรค่าคงที่คือ: %d", value);
// พยายามเปลี่ยนค่าตัวแปรค่าคงที่
value = 8;
return 0;
}
ผลลัพธ์
error: assignment of read-only variable 'value'
2. สร้าง Enum (Enumeration)
Enum หรือการแจกแจงค่าก็ใช้สร้างชุดของค่าคงที่ Enum เป็นชนิดข้อมูลที่ผู้ใช้กำหนดเอง ใช้ในภาษาโปรแกรมหลายภาษารวมถึง C และ C++ เช่น สามารถกำหนดวันในสัปดาห์เป็น enum เนื่องจากมีค่าข้อมูลคงที่แบบสตริง
ตัวอย่าง
#include <stdio.h>
enum months {Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec};
int main() {
int i;
printf("ค่าคือ: ");
for (i = Jan; i <= Dec; i++)
printf("%d ", i);
return 0;
}
ผลลัพธ์
ค่าคือ: 0 1 2 3 4 5 6 7 8 9 10 11
3. ใช้ Macros
Macros เป็นประเภทของคำสั่งเพราปรอเซสเซอร์ (preprocessor directive) ประกอบด้วยชุดโค้ดที่รู้จักด้วยชื่อ สร้างโดยใช้ '#define' เมื่อคอมไพเลอร์พบชื่อของ macro ในโค้ด จะแทนที่ด้วยโค้ด ดังนั้น macro จึงเป็นแบบค่าคงที่
ตัวอย่าง
#include <iostream>
using namespace std;
#define val 10
int main() {
val++; // ไม่สามารถแก้ไขค่าคงที่ได้
return 0;
}
ผลลัพธ์
error: expression is not assignable
ตัวอย่างเพิ่มเติม
#include <iostream>
using namespace std;
#define val 10
int main() {
int product = 1;
cout << "ค่าของ Macro val คือ: " << val;
for(int i = 0; i < val; i++) {
product = product * val;
}
cout << "\nผลคูณคือ: " << product;
cout << "\nค่าของ Macro val หลังพยายามแก้ไขคือ: " << val;
return 0;
}
ผลลัพธ์
ค่าของ Macro val คือ: 10 ผลคูณคือ: 1410065408 ค่าของ Macro val หลังพยายามแก้ไขคือ: 10