Computer >> Máy Tính >  >> Lập trình >> C ++

tĩnh const so với #define và enum?

"const static"

“Static const” về cơ bản là sự kết hợp của static (một định nghĩa lưu trữ) và const (một định nghĩa kiểu).

Giá trị tĩnh xác định thời gian tồn tại và khả năng hiển thị / khả năng truy cập của biến. Điều này có nghĩa là nếu một biến được khai báo là một biến tĩnh, nó sẽ vẫn còn trong bộ nhớ trong suốt thời gian chương trình đang chạy, trong khi các biến bình thường hoặc biến tự động sẽ bị hủy khi hàm (nơi biến được xác định) kết thúc.

Const là một định tính kiểu. Bộ định tính loại được sử dụng để thể hiện thông tin bổ sung về một giá trị thông qua hệ thống loại. Khi một biến được khởi tạo bằng cách sử dụng bộ định loại kiểu const, nó sẽ không chấp nhận thay đổi thêm về giá trị của nó.

Vì vậy, kết hợp static và const, chúng ta có thể nói rằng khi một biến được khởi tạo bằng cách sử dụng static const, nó sẽ giữ nguyên giá trị của nó cho đến khi chương trình thực thi và cũng không chấp nhận bất kỳ thay đổi nào về giá trị của nó.

Ví dụ

#include<iostream>
using namespace std;
int main(){
int input = 10;
static const int value = 5;
input += value;
cout << input;
return 0;
}

"#define"

Các lệnh của bộ tiền xử lý được gọi là DIRECTIVES và bắt đầu bằng ký hiệu bảng Anh hoặc dấu thăng (#). Không có khoảng trắng nào được xuất hiện trước # và KHÔNG bắt buộc phải có dấu chấm phẩy ở cuối.

Nhiều việc có thể được thực hiện trong giai đoạn tiền xử lý bao gồm

  • Bao gồm các tệp khác thông qua chỉ thị #include

  • Định nghĩa các hằng số biểu tượng và macro thông qua chỉ thị #define

Thông qua một số chỉ thị tiền xử lý, bạn cũng có thể biên dịch có điều kiện hoặc thực thi một số chỉ thị tiền xử lý.

Lưu ý - Giai đoạn tiền xử lý của một chương trình C ++ xảy ra trước khi một chương trình được biên dịch. Bộ tiền xử lý C ++ là một chương trình được thực thi trước khi mã nguồn được biên dịch.

Bạn đã học cách làm việc với chỉ thị tiền xử lý #include cho phép bạn đưa các tệp tiêu đề mong muốn vào chương trình của mình. Cuộc thảo luận này hoặc của chúng tôi dành riêng cho #define chỉ thị tiền xử lý.

Bộ tiền xử lý #define cho phép chúng ta xác định các tên và hằng số tượng trưng. Ví dụ,

#define PI 3.14159

Câu lệnh này sẽ dịch mỗi lần xuất hiện PI trong chương trình thành 3,14159.

Ví dụ về C ++ #define

Bây giờ, hãy xem xét ví dụ hoàn chỉnh, trong đó mỗi lần xuất hiện PI sẽ thay thế bằng giá trị 3,14159, giá trị được xác định bằng chỉ thị #define.

Input: PI 3.14159
Output: Area of Circle 314.15

Ví dụ

#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 là kiểu dữ liệu do người dùng xác định, trong đó chúng tôi chỉ định một tập giá trị cho một biến và biến chỉ có thể nhận một trong một tập hợp nhỏ các giá trị có thể có. Chúng tôi sử dụng từ khóa enum để định nghĩa một bảng kê.

enum direction {East, West, North, South}dir;

Ở đây tên Enumeration là hướng chỉ có thể nhận một trong bốn giá trị được chỉ định, ký tự ở cuối khai báo là một biến enum.

Hãy lấy một ví dụ đơn giản để hiểu điều này:

Ở đây tôi đã gán giá trị Tây cho biến enum dir và khi tôi hiển thị giá trị của dir, nó hiển thị 1. Điều này là do theo mặc định, các giá trị theo thứ tự tăng dần bắt đầu từ 0, có nghĩa là Đông là 0, Tây là 1, Bắc là 2 và Nam là 3.

Input: direction {East, West, North, South} dir=West
Output: 1

Ví dụ

#include<iostream>
using namespace std;
enum direction {East, West, North, South} dir;
int main(){
   dir = West;
   cout<<dir;
   return 0;
}

Một cách khác để khai báo biến enum

Như chúng ta đã thấy trong ví dụ trên rằng tôi đã khai báo biến enum dir trong quá trình khai báo enum, có một cách khác để khai báo một biến enum.

Ví dụ

#include <iostream>
using namespace std;
enum direction {East, West, North, South};
int main() {
   direction dir;
   dir = South;
   cout<<dir;
   return 0;
}

Đầu ra

3

Tại sao lại sử dụng enum trong C ++

Bây giờ chúng ta đã hiểu enum là gì và cách sử dụng chúng trong chương trình, hãy thảo luận tại sao chúng ta sử dụng chúng:

Enums chỉ được sử dụng khi chúng ta mong đợi biến có một trong các bộ giá trị có thể có, ví dụ:chúng ta có một biến dir giữ hướng. Vì chúng ta có bốn hướng, nên biến này có thể nhận bất kỳ một trong bốn giá trị, nếu chúng ta cố gắng gán một giá trị ngẫu nhiên khác cho biến này, nó sẽ tạo ra một lỗi biên dịch. Điều này giúp tăng thời gian biên dịch kiểm tra và tránh các lỗi xảy ra khi chuyển các hằng số không hợp lệ.

Một nơi quan trọng khác mà chúng được sử dụng thường xuyên là các câu lệnh switch case, trong đó tất cả các giá trị mà các khối case mong đợi có thể được xác định trong một enum. Bằng cách này, chúng tôi có thể đảm bảo rằng biến enum mà chúng tôi chuyển vào trong dấu ngoặc đơn sẽ không nhận bất kỳ giá trị ngẫu nhiên nào mà nó không được chấp nhận.