C - Literals: A Beginner's Guide

Xin chào các bạnfuture programmers! Hôm nay, chúng ta sẽ bắt đầu một hành trình thú vị vào thế giới lập trình C, cụ thể là tập trung vào literals. Đừng lo lắng nếu bạn chưa bao giờ viết mã trước đây - tôi sẽ là người hướng dẫn thân thiện của bạn, và chúng ta sẽ cùng nhau bước từng bước. Cuối cùng của bài hướng dẫn này, bạn sẽ ngạc nhiên về bao nhiêu điều bạn đã học được!

C - Literals

What Are Literals?

Trước khi chúng ta bắt đầu, hãy hiểu literals là gì. Trong lập trình, literals là các giá trị cố định xuất hiện trực tiếp trong mã. Chúng giống như các hằng số của thế giới lập trình - không thay đổi và đáng tin cậy. Hãy nghĩ của chúng như là những khối xây dựng của chương trình của bạn.

Bây giờ, hãy cùng khám phá các loại literals khác nhau trong C!

Integer Literals in C

Integer literals là các số nguyên không có dấu phẩy thập phân. Trong C, chúng ta có thể biểu diễn các số nguyên theo nhiều cách khác nhau. Hãy cùng xem một số ví dụ:

int a = 42;        // Decimal (base 10)
int b = 052;       // Octal (base 8)
int c = 0x2A;      // Hexadecimal (base 16)
int d = 0b101010;  // Binary (base 2, C99 onwards)

Trong đoạn mã này:

  • 42 là literal thập phân (được sử dụng trong cuộc sống hàng ngày)
  • 052 là literal bát phân (lưu ý dấu 0 ở trước)
  • 0x2A là literal hexa (lưu ý dấu 0x)
  • 0b101010 là literal nhị phân (lưu ý dấu 0b)

Tất cả các literal này biểu diễn cùng một giá trị: 42 trong hệ thập phân. Có phải không thú vị cách các số có thể mặc khác nhau "outfits"?

Integer Suffixes

Chúng ta cũng có thể thêm các hậu tố vào literal số nguyên để chỉ định loại của chúng:

int e = 42L;    // Long int
int f = 42U;    // Unsigned int
int g = 42UL;   // Unsigned long int
int h = 42LL;   // Long long int (C99 onwards)

Những hậu tố này giúp trình biên dịch hiểu chính xác loại số nguyên chúng ta đang làm việc với.

Floating-point Literals in C

Bây giờ, hãy nhảy vào thế giới của các số thập phân! Floating-point literals là các số có dấu phẩy thập phân. Dưới đây là một số ví dụ:

float pi = 3.14159;
double avogadro = 6.022e23;  // Scientific notation
long double planck = 6.62607015e-34L;  // With L suffix for long double

Trong đoạn mã này:

  • 3.14159 là một literal浮点数
  • 6.022e23 sử dụng ký hiệu khoa học (e23 có nghĩa là × 10^23)
  • 6.62607015e-34L là một literal long double (lưu ý hậu tố L)

Lưu ý, các literal浮点数 mặc định là độ chính xác kép. Nếu bạn muốn một float, bạn có thể sử dụng hậu tố F:

float f = 3.14F;

Character Literals in C

Character literals trong C được bao quanh bởi dấu 单引号. Chúng biểu diễn một ký tự duy nhất. Hãy xem một số ví dụ:

char grade = 'A';
char newline = '\n';
char smiley = '\u263A';  // Unicode character (C99 onwards)

Trong đoạn mã này:

  • 'A' là một literal ký tự đơn giản
  • '\n' là một ký tự đặc biệt (newline)
  • '\u263A' là một ký tự Unicode (một khuôn mặt smiley ☺)

Escape Sequences in C

Đôi khi chúng ta cần biểu diễn các ký tự không thể gõ trực tiếp. Đó là lúc các escape sequence trở nên hữu ích. Chúng luôn bắt đầu với một dấu gạch chéo ngược (). Dưới đây là bảng các escape sequence phổ biến:

Escape Sequence Meaning
\n Newline
\t Tab
\ Backslash
\' Single quote
\" Double quote
\0 Null character

Hãy xem chúng trong hành động:

char newline = '\n';
char tab = '\t';
char backslash = '\\';
char single_quote = '\'';
char double_quote = '\"';
char null_char = '\0';

printf("Hello\tWorld!\nThis is a backslash: \\\nAnd a quote: \'");

Đoạn mã này sẽ xuất ra:

Hello   World!
This is a backslash: \
And a quote: '

String Literals in C

Cuối cùng, hãy nói về string literals. Trong C, string literals là chuỗi các ký tự được bao quanh bởi dấu 双引号. Dưới đây là một số ví dụ:

char* greeting = "Hello, World!";
char* multiline = "This is a\n"
"multi-line\n"
"string literal.";
char* unicode = u8"This is a Unicode string: \u263A";  // C11 onwards

Trong đoạn mã này:

  • "Hello, World!" là một literal chuỗi đơn giản
  • Chuỗi đa dòng cho thấy cách chúng ta có thể chia các chuỗi dài thành nhiều dòng
  • Chuỗi Unicode minh họa cách bao gồm các ký tự Unicode trong chuỗi

Lưu ý, trong C, các literal chuỗi thực sự là các mảng ký tự, kết thúc bằng một ký tự null ('\0').

Conclusion

Chúc mừng! Bạn vừa mới bước những bước đầu tiên vào thế giới lập trình C bằng cách học về literals. Những khối xây dựng cơ bản này sẽ rất quan trọng khi bạn tiếp tục hành trình lập trình của mình.

Nhớ rằng, thực hành làm nên完美. Hãy thử viết mã sử dụng các loại literals khác nhau. Thử nghiệm, mắc lỗi và học từ chúng. Đó là cách tốt nhất để trở thành một lập trình viên thành thạo.

Chúc các bạn viết mã vui vẻ, và cho đến lần gặp lại, hãy tiếp tục khám phá thế giới kỳ diệu của C!

Credits: Image by storyset