Define
Define có 3 chức năng chính :
- Định nghĩa tên cho kiểu dữ liệu
- Định nghĩa tên cho giá trị
- Định nghĩa tên cho cấu trúc hoặc câu lệnh
Định nghĩa tên cho kiểu dữ liệu
Define có thể sử dụng để làm công việc tương tự như typedef đó là định nghĩa tên mới cho kiểu dữ liệu
Cú pháp : #define tên_mới kiểu_dữ_liệu
Định nghĩa tên cho giá trị
Define được sử dụng để đặt tên cho các giá trị được sử dụng trong chương trình nhằm mục đích truyền tải ý nghĩa tốt hơn
Cú pháp : #define tên_giá_trị giá_trị
Chúng ta vẫn thử trên chương trình tào lao. Ta sẽ xóa dòng lệnh
//typedef long long ll;
Và thay bằng
#define ll long long
Lưu ý dấu # trước define và sau long long không có dấu ;
Chương trình của chúng ta như sau:
#include <iostream>
#include <iomanip>
using namespace std;
//typedef long long ll;
#define ll long long
typedef int arr[3];
int main(){
int a = 123;
int soTien;
int soNam;
int tongSoTien;
int x = 15 < 25 ? 100 : 200;
int diBien1= (10 < 20) && (20 >= 20);
int diBien2= (10 > 20) || (20 < 10);
long long b = 1234567890;
float c = 2.3456;
double d = 2.3456789;
char kitu= 'A';
char Ten;
bool check = true;
a +=10;
ll g = 1234567890;
arr array1{ 1 , 2, 3};
cout << "Gia tri cua a : " << a << endl;
cout << "Gia tri cua b : " << b << endl;
cout << "Gia tri cua c : " << c << endl;
cout << "Gia tri cua d : " << d << endl;
cout << "Gia tri cua kitu : " << kitu << endl;
cout << "Gia tri cua check : " << check << endl;
cout << "Gia tri cua check : " << boolalpha << check << endl;
cout << "Gia tri cua c : " << fixed << setprecision(2) << c << endl;
cout << "Gia tri cua d : " << fixed << setprecision(4) << d << endl;
cout << setw(12) << setfill('0') << a << endl;
cout << setw(12) << setfill(' ') << "Dat Viet" << endl;
cout << "Nhap tên của bạn, chỉ một chữ A,B,C : "<< endl;
cin >> Ten;
cout << "Ten ban la : " << Ten << endl;
cout << "Nhap so tien gui hang thang : "<< endl;
cin >> soTien;
cout << "Nhap so nam tiet kiem : "<< endl;
cin >> soNam;
tongSoTien = (soTien * 12) * soNam;
cout << "Xin chao, " << Ten << ". Sau " << soNam << " nam tich luy. Ban da tiet kiem dươc tong so tien là: " << tongSoTien << endl;
cout << "Gia tri cua x : " << x << endl;
cout << "Gia tri cua diBien1 : " << diBien1 << ". Gia tri cua diBien2 : " << diBien2 << endl;
cout << "Gia tri cua diBien1 : " << boolalpha << diBien1 << ". Gia tri cua diBien2 : " << boolalpha << diBien2 << endl;
cout << (100 > 50) << endl;
cout << (20 <= 30) << endl;
cout << (80 >= 100) << endl;
cout << "Gia tri cua g : " << g << endl;
}
Sử dụng IDE Online để chạy thử chương trình
Định nghĩa tên cho cấu trúc hoặc câu lệnh
Việc sử dụng define để định nghĩa các câu lệnh hay cấu trúc nhằm mục đích là có thể tiết kiệm thời gian code, tuy nhiên việc này sẽ dẫn tới khó khăn cho người khác khi cần tham khảo mã nguồn.
Nói chung, không nên lạm dụng việc sử dụng define với mục đích này.
Ví dụ, chúng ta có thể định nghĩa cấu trúc để in ra dòng chữ Dat Viet Lap Trinh nhu sau
#define greet cout << "Dat Viet Lap Trinh" << endl;
Sau đó trong chương trình, khi nào cần ta chỉ việc gọi lệnh greet. Ta thử trong chương trình tào lao như sau:
#include <iostream>Bấm Run để chạy chương trình, đầu chương trình sẽ in Dat Viet Lap trinh và kết thúc chương trình cũng sẽ là Dat Viet Lap TRinh
#include <iomanip>
using namespace std;
//typedef long long ll;
#define ll long long
#define greet cout << "Dat Viet Lap Trinh" << endl;
typedef int arr[3];
int main(){
greet;
int a = 123;
int soTien;
int soNam;
int tongSoTien;
int x = 15 < 25 ? 100 : 200;
int diBien1= (10 < 20) && (20 >= 20);
int diBien2= (10 > 20) || (20 < 10);
long long b = 1234567890;
float c = 2.3456;
double d = 2.3456789;
char kitu= 'A';
char Ten;
bool check = true;
a +=10;
ll g = 1234567890;
arr array1{ 1 , 2, 3};
cout << "Gia tri cua a : " << a << endl;
cout << "Gia tri cua b : " << b << endl;
cout << "Gia tri cua c : " << c << endl;
cout << "Gia tri cua d : " << d << endl;
cout << "Gia tri cua kitu : " << kitu << endl;
cout << "Gia tri cua check : " << check << endl;
cout << "Gia tri cua check : " << boolalpha << check << endl;
cout << "Gia tri cua c : " << fixed << setprecision(2) << c << endl;
cout << "Gia tri cua d : " << fixed << setprecision(4) << d << endl;
cout << setw(12) << setfill('0') << a << endl;
cout << setw(12) << setfill(' ') << "Dat Viet" << endl;
cout << "Nhap tên của bạn, chỉ một chữ A,B,C : "<< endl;
cin >> Ten;
cout << "Ten ban la : " << Ten << endl;
cout << "Nhap so tien gui hang thang : "<< endl;
cin >> soTien;
cout << "Nhap so nam tiet kiem : "<< endl;
cin >> soNam;
tongSoTien = (soTien * 12) * soNam;
cout << "Xin chao, " << Ten << ". Sau " << soNam << " nam tich luy. Ban da tiet kiem dươc tong so tien là: " << tongSoTien << endl;
cout << "Gia tri cua x : " << x << endl;
cout << "Gia tri cua diBien1 : " << diBien1 << ". Gia tri cua diBien2 : " << diBien2 << endl;
cout << "Gia tri cua diBien1 : " << boolalpha << diBien1 << ". Gia tri cua diBien2 : " << boolalpha << diBien2 << endl;
cout << (100 > 50) << endl;
cout << (20 <= 30) << endl;
cout << (80 >= 100) << endl;
cout << "Gia tri cua g : " << g << endl;
greet;
}
Sự Khác Nhau Giữa Define Và Typedef
Typedef | #Define |
Chỉ sử dụng để đặt tên thay thế cho kiểu dữ liệu | Có thể sử dụng để đặt tên cho kiểu dữ liệu, giá trị, cấu trúc, câu lệnh |
Kết thúc bởi dấu ; | Không có kết thúc bằng dấu ; |
Được xử lý bới trình biên dịch (Compiler) | Được xử lý bởi preprocessor |
Không có dấu # | Bắt đầu bởi dấu # |
Using
Nếu bạn sử dụng chuẩn C++11 hoặc mới hơn thì bạn có thể sử dụng using để thay cho typedef
Chúng ta có thể thay thế lệnh
#define ll long long
bằng cách sử dụng using như sau:
using ll = long long;
Chương trình sau khi thêm lệnh using:
#include <iostream>
#include <iomanip>
using namespace std;
//typedef long long ll;
//#define ll long long
using ll = long long;
#define greet cout << "Dat Viet Lap Trinh" << endl;
typedef int arr[3];
int main(){
greet;
int a = 123;
int soTien;
int soNam;
int tongSoTien;
int x = 15 < 25 ? 100 : 200;
int diBien1= (10 < 20) && (20 >= 20);
int diBien2= (10 > 20) || (20 < 10);
long long b = 1234567890;
float c = 2.3456;
double d = 2.3456789;
char kitu= 'A';
char Ten;
bool check = true;
a +=10;
ll g = 1234567890;
arr array1{ 1 , 2, 3};
cout << "Gia tri cua a : " << a << endl;
cout << "Gia tri cua b : " << b << endl;
cout << "Gia tri cua c : " << c << endl;
cout << "Gia tri cua d : " << d << endl;
cout << "Gia tri cua kitu : " << kitu << endl;
cout << "Gia tri cua check : " << check << endl;
cout << "Gia tri cua check : " << boolalpha << check << endl;
cout << "Gia tri cua c : " << fixed << setprecision(2) << c << endl;
cout << "Gia tri cua d : " << fixed << setprecision(4) << d << endl;
cout << setw(12) << setfill('0') << a << endl;
cout << setw(12) << setfill(' ') << "Dat Viet" << endl;
cout << "Nhap tên của bạn, chỉ một chữ A,B,C : "<< endl;
cin >> Ten;
cout << "Ten ban la : " << Ten << endl;
cout << "Nhap so tien gui hang thang : "<< endl;
cin >> soTien;
cout << "Nhap so nam tiet kiem : "<< endl;
cin >> soNam;
tongSoTien = (soTien * 12) * soNam;
cout << "Xin chao, " << Ten << ". Sau " << soNam << " nam tich luy. Ban da tiet kiem dươc tong so tien là: " << tongSoTien << endl;
cout << "Gia tri cua x : " << x << endl;
cout << "Gia tri cua diBien1 : " << diBien1 << ". Gia tri cua diBien2 : " << diBien2 << endl;
cout << "Gia tri cua diBien1 : " << boolalpha << diBien1 << ". Gia tri cua diBien2 : " << boolalpha << diBien2 << endl;
cout << (100 > 50) << endl;
cout << (20 <= 30) << endl;
cout << (80 >= 100) << endl;
cout << "Gia tri cua g : " << g << endl;
greet;
}
Bấm Run để chạy thử:
Tóm lại chúng ta có thể sử dụng một trong 3 lệnh, đều cho kết quả như nhau trong chương trình tào lao của ta:
typedef long long ll;
#define ll long long
using ll = long long;
Không có nhận xét nào:
Đăng nhận xét