"ค่าคงที่"
“const คงที่” โดยพื้นฐานแล้วเป็นการรวมกันของสแตติก (ตัวระบุที่เก็บข้อมูล) และ const (ตัวระบุประเภท)
สแตติกกำหนดอายุการใช้งานและการมองเห็น/การเข้าถึงของตัวแปร ซึ่งหมายความว่าหากมีการประกาศตัวแปรเป็นตัวแปรคงที่ ตัวแปรนั้นจะยังคงอยู่ในหน่วยความจำตลอดเวลาเมื่อโปรแกรมกำลังทำงาน ในขณะที่ตัวแปรปกติหรือตัวแปรอัตโนมัติจะถูกทำลายเมื่อฟังก์ชัน (ซึ่งกำหนดตัวแปรถูกกำหนดไว้) สิ้นสุดลงพี>
const เป็นตัวกำหนดประเภท ตัวระบุประเภทใช้เพื่อแสดงข้อมูลเพิ่มเติมเกี่ยวกับค่าผ่านระบบประเภท เมื่อตัวแปรถูกเริ่มต้นโดยใช้ตัวระบุประเภท const ตัวแปรนั้นจะไม่ยอมรับการเปลี่ยนแปลงในค่าของมันอีก
ดังนั้นเมื่อรวมค่าคงที่และค่าคงที่เข้าด้วยกัน เราสามารถพูดได้ว่าเมื่อตัวแปรเริ่มต้นโดยใช้ค่าคงที่คงที่ ตัวแปรจะคงค่าไว้จนกว่าจะมีการดำเนินการของโปรแกรม และจะไม่ยอมรับการเปลี่ยนแปลงใดๆ ในค่าของตัวแปรนั้น
ตัวอย่าง
#include<iostream> using namespace std; int main(){ int input = 10; static const int value = 5; input += value; cout << input; return 0; }
"#define"
คำสั่งตัวประมวลผลล่วงหน้าเรียกว่า DIRECTIVES และเริ่มต้นด้วยสัญลักษณ์ปอนด์หรือแฮช (#) ไม่ควรมีช่องว่างก่อนเครื่องหมาย # และไม่จำเป็นต้องใช้เครื่องหมายอัฒภาคต่อท้าย
หลายอย่างที่สามารถทำได้ในช่วงก่อนการประมวลผล ได้แก่
-
รวมไฟล์อื่นๆ ผ่าน #include directive
-
คำจำกัดความของค่าคงที่สัญลักษณ์และมาโครผ่าน #define directive
คุณยังสามารถคอมไพล์ตามเงื่อนไขหรือดำเนินการคำสั่งพรีโปรเซสเซอร์บางตัวผ่านคำสั่งตัวประมวลผลล่วงหน้าบางตัวได้
หมายเหตุ - ขั้นตอนก่อนการประมวลผลของโปรแกรม C++ เกิดขึ้นก่อนที่จะคอมไพล์โปรแกรม ตัวประมวลผลล่วงหน้า C++ คือโปรแกรมที่ทำงานก่อนที่จะคอมไพล์ซอร์สโค้ด
คุณได้เรียนรู้ที่จะทำงานกับ #include preprocessor directive ที่ให้คุณรวมไฟล์ส่วนหัวที่ต้องการไว้ในโปรแกรมของคุณแล้ว การสนทนานี้หรือของเรามีขึ้นเพื่อ #define คำสั่งตัวประมวลผลล่วงหน้า
ตัวประมวลผลล่วงหน้า #define ช่วยให้เราสามารถกำหนดชื่อสัญลักษณ์และค่าคงที่ได้ ตัวอย่างเช่น
#define PI 3.14159
คำสั่งนี้จะแปล PI ทุกรายการในโปรแกรมเป็น 3.14159
C++ #define ตัวอย่าง
ตอนนี้ให้พิจารณาตัวอย่างที่สมบูรณ์ซึ่งทุกๆ การเกิดขึ้นของ PI จะแทนที่ด้วยค่า 3.14159 ซึ่งเป็นค่าที่กำหนดด้วย #define directive
Input: PI 3.14159 Output: Area of Circle 314.15
ตัวอย่าง
#include<iostream> using namespace std; #define PI 3.14159 int main() { int r = 10; float cir; cir = PI * (r * r); cout<<"Area of Circle: "<<cir<<endl; }
"enum"
enum เป็นประเภทข้อมูลที่ผู้ใช้กำหนด โดยเราระบุชุดของค่าสำหรับตัวแปร และตัวแปรสามารถนำค่าที่เป็นไปได้ชุดหนึ่งออกจากชุดเล็ก ๆ เท่านั้น เราใช้คีย์เวิร์ด enum เพื่อกำหนดการแจงนับ
enum direction {East, West, North, South}dir;
ในที่นี้ ชื่อการแจงนับคือทิศทางที่รับค่าที่ระบุได้เพียงหนึ่งในสี่ค่า dir ที่ส่วนท้ายของการประกาศเป็นตัวแปร enum
มาดูตัวอย่างง่ายๆ เพื่อทำความเข้าใจสิ่งนี้:
ที่นี่ฉันได้กำหนดค่า West ให้กับตัวแปร enum dir และเมื่อฉันแสดงค่าของ dir มันจะแสดง 1 เนื่องจากโดยค่าเริ่มต้นค่าต่างๆ จะเรียงลำดับเพิ่มขึ้นโดยเริ่มจาก 0 ซึ่งหมายความว่า East คือ 0, West คือ 1 ทิศเหนือ คือ 2 และทิศใต้คือ 3
Input: direction {East, West, North, South} dir=West Output: 1
ตัวอย่าง
#include<iostream> using namespace std; enum direction {East, West, North, South} dir; int main(){ dir = West; cout<<dir; return 0; }
อีกวิธีในการประกาศตัวแปร enum
ดังที่เราได้เห็นในตัวอย่างข้างต้นที่ฉันได้ประกาศตัวแปร enum dir ในระหว่างการประกาศ enum มีอีกวิธีหนึ่งในการประกาศตัวแปร enum
ตัวอย่าง
#include <iostream> using namespace std; enum direction {East, West, North, South}; int main() { direction dir; dir = South; cout<<dir; return 0; }
ผลลัพธ์
3
เหตุใดจึงต้องใช้ enum ใน C++
ตอนนี้เราเข้าใจแล้วว่า enum คืออะไรและจะใช้อย่างไรในโปรแกรม เรามาพูดคุยกันว่าทำไมเราจึงใช้:
Enum จะใช้ก็ต่อเมื่อเราคาดหวังว่าตัวแปรจะมีชุดค่าที่เป็นไปได้ชุดหนึ่งเท่านั้น ตัวอย่างเช่น เรามีตัวแปร dir ที่ยึดทิศทางไว้ เนื่องจากเรามีสี่ทิศทาง ตัวแปรนี้จึงสามารถรับค่าใดค่าหนึ่งในสี่ค่าได้ หากเราพยายามกำหนดค่าสุ่มอื่นให้กับตัวแปรนี้ ตัวแปรนี้จะทำให้เกิดข้อผิดพลาดในการรวบรวม สิ่งนี้จะเพิ่มการตรวจสอบเวลาคอมไพล์และหลีกเลี่ยงข้อผิดพลาดที่เกิดขึ้นจากการส่งผ่านค่าคงที่ที่ไม่ถูกต้อง
สถานที่สำคัญอีกแห่งที่ใช้บ่อยคือคำสั่ง switch case ซึ่งค่าทั้งหมดที่ case block คาดหวังสามารถกำหนดได้ใน enum ด้วยวิธีนี้ เราจึงมั่นใจได้ว่าตัวแปร enum ที่เราส่งผ่านในวงเล็บสวิตช์จะไม่รับค่าสุ่มใดๆ ที่ไม่ควรยอมรับ