C++ Constants/Literals

Xin chào các nhà lập trình tương lai! Hôm nay, chúng ta sẽ bắt đầu một hành trình đầy thú vị vào thế giới của các hằng số vàliterals trong C++. Đừng lo lắng nếu những术语 này có vẻ hơi đáng sợ - vào cuối bài học này, bạn sẽ sử dụng chúng một cách thành thạo! Hãy cùng nhau khám phá!

C++ Constants/Literals

What are Constants and Literals?

Trước khi chúng ta đi vào chi tiết, hãy hiểu hằng số và literals là gì. Hãy nghĩ về chúng như những phần tử "không thể thay đổi" trong mã của bạn - như số ngày trong một tuần hoặc giá trị của pi. Chúng là những người bạn đáng tin cậy luôn ở bên bạn, không thay đổi, bất kể đang xảy ra điều gì trong chương trình của bạn.

Integer Literals

Hãy bắt đầu với một điều quen thuộc - số! Trong C++, khi chúng ta viết một số nguyên trực tiếp trong mã của mình, chúng ta gọi nó là một integer literal. Nó giống như viết một số trên một mảnh giấy - đơn giản và dễ hiểu.

int myAge = 25;
int numberOfPlanets = 8;
int negativeNumber = -10;

Trong những ví dụ này, 25, 8 và -10 là các integer literals. Chúng chỉ ở đó, là những con số, không có dấu phẩy thập phân hoặc bất kỳ điều gì phức tạp.

Nhưng đợi đã, còn nhiều hơn nữa! C++ cho phép chúng ta viết các integer literals trong các hệ số học khác nhau:

int decimalNumber = 42;     // Decimal (base 10)
int octalNumber = 052;      // Octal (base 8) - bắt đầu bằng 0
int hexNumber = 0x2A;       // Hexadecimal (base 16) - bắt đầu bằng 0x
int binaryNumber = 0b101010;// Binary (base 2) - bắt đầu bằng 0b (từ C++14 trở đi)

Đừng lo lắng nếu octal, hexadecimal hoặc binary có vẻ khó hiểu. Hiện tại, chỉ cần biết rằng chúng là những cách khác nhau để đại diện cho cùng một số. Nó giống như nói các ngôn ngữ khác nhau - "forty-two", "cuarenta y dos", và "quarante-deux" đều có nghĩa là cùng một điều!

Floating-point Literals

Bây giờ, hãy thêm một chút dấu phẩy thập phân vào hỗn hợp! Các floating-point literals là các số có dấu phẩy thập phân hoặc ở dạng ký hiệu khoa học.

float pi = 3.14159f;
double avogadroNumber = 6.022e23;
long double veryPreciseNumber = 1.23456789L;

Ở đây, 3.14159f là một float literal (lưu ý có 'f' ở cuối), 6.022e23 là một double literal ở dạng ký hiệu khoa học (e23 có nghĩa là ×10^23), và 1.23456789L là một long double literal (lưu ý có 'L' ở cuối).

Boolean Literals

Các boolean literals là đơn giản nhất - chỉ có hai!

bool isAwesome = true;
bool isBoring = false;

Đó là tất cả! Chỉ có truefalse. Chúng giống như "yes" và "no" trong thế giới lập trình.

Character Literals

Các character literals đại diện cho một ký tự duy nhất và được bao quanh bởi các dấu ngoặc đơn.

char firstInitial = 'J';
char newline = '\n';
char tab = '\t';

Cả hai ví dụ cuối cùng cho thấy các ký tự đặc biệt: '\n' cho một dòng mới và '\t' cho một tab. Những điều này được gọi là các escape sequences.

String Literals

Các string literals là các chuỗi ký tự được bao quanh bởi các dấu ngoặc kép.

std::string greeting = "Hello, World!";
std::string quote = "To be, or not to be, that is the question.";

Nhớ rằng các chuỗi sử dụng dấu ngoặc kép, trong khi các ký tự đơn sử dụng dấu ngoặc đơn!

Defining Constants

Bây giờ chúng ta đã biết về literals, hãy xem cách chúng ta có thể sử dụng chúng để tạo các hằng số - các giá trị không thay đổi suốt chương trình của chúng ta.

The #define Preprocessor

Một cách để định nghĩa các hằng số là sử dụng chỉ thị preprocessor #define:

#define PI 3.14159
#define MAX_STUDENTS 30

// Sử dụng
double circleArea = PI * radius * radius;
if (numberOfStudents > MAX_STUDENTS) {
std::cout << "Class is full!";
}

Chỉ thị #define nói với trình biên dịch thay thế mỗi lần xuất hiện của PI bằng 3.14159 và MAX_STUDENTS bằng 30 trước khi biên dịch mã.

The const Keyword

Một cách hiện đại hơn và được ưa thích để định nghĩa các hằng số là sử dụng từ khóa const:

const double PI = 3.14159;
const int MAX_STUDENTS = 30;

// Cách sử dụng tương tự như với #define

Từ khóa const nói với trình biên dịch rằng các biến này không thể thay đổi sau khi khởi tạo.

Putting It All Together

Hãy kết thúc với một chương trình nhỏ sử dụng các hằng số và literals khác nhau:

#include <iostream>
#include <string>

#define GAME_NAME "C++ Adventure"

int main() {
const int MAX_LEVEL = 100;
const double XP_MULTIPLIER = 1.5;

int currentLevel = 1;
double currentXP = 0.0;
bool hasCompletedTutorial = false;
char playerRank = 'D';
std::string playerName = "Newbie";

std::cout << "Welcome to " << GAME_NAME << "!" << std::endl;
std::cout << "Player: " << playerName << std::endl;
std::cout << "Level: " << currentLevel << "/" << MAX_LEVEL << std::endl;
std::cout << "XP: " << currentXP << std::endl;
std::cout << "Rank: " << playerRank << std::endl;
std::cout << "Tutorial completed: " << (hasCompletedTutorial ? "Yes" : "No") << std::endl;

return 0;
}

Chương trình này sử dụng tất cả các loại hằng số và literals mà chúng ta đã thảo luận. Nó định nghĩa một tên game bằng #define, đặt một mức max level và hệ số nhân XP bằng const, và sử dụng các literals khác nhau để khởi tạo các thông số của người chơi.

Conclusion

Chúc mừng! Bạn đã刚刚迈出进入C++常数和字面量世界的第一步。记住,这些是您程序的构建块 - 您将用来创造惊人的不变值。在你继续编程旅程的过程中,你会发现每天都在使用这些概念。继续练习,保持好奇心,快乐编码!

Literal Type Example Description
Integer 42, -10, 0, 1000 Whole numbers
Octal 052, 077 Base-8 numbers (start with 0)
Hexadecimal 0x2A, 0xFF Base-16 numbers (start with 0x)
Binary 0b101010 Base-2 numbers (start with 0b, C++14 onwards)
Floating-point 3.14, 2.5f, 1e10 Numbers with decimal points or in scientific notation
Boolean true, false Logical values
Character 'A', '\n', '\t' Single characters or escape sequences
String "Hello", "C++" Sequences of characters

Credits: Image by storyset