C++: Bài 7. Hằng/Literal
Giải phóng thời gian, khai phóng năng lực
Hằng đề cập đến các giá trị cố định mà chương trình có thể không thay đổi và chúng được gọi là các literal.
Hằng có thể thuộc bất kỳ kiểu dữ liệu cơ bản nào và có thể được chia thành Số nguyên, Số dấu phẩy động, Ký tự, Chuỗi và Giá trị Boolean.
Các hằng được xử lý giống như các biến thông thường ngoại trừ việc không thể sửa đổi giá trị của chúng sau khi định nghĩa.
Hằng nguyên
Một ký tự số nguyên có thể là một hằng số thập phân, bát phân hoặc thập lục phân. Tiền tố chỉ định cơ số hoặc radix: 0x hoặc 0X cho hệ thập lục phân, 0 cho hệ bát phân và không có gì cho thập phân.
Một chữ số nguyên cũng có thể có một hậu tố là sự kết hợp của U và L, tương ứng là không dấu (unsigned) và dài (long). Hậu tố có thể là chữ hoa hoặc chữ thường và có thể theo bất kỳ thứ tự nào.
Dưới đây là một số ví dụ về các hằng nguyên:
212 // hợp lệ 215u // hợp lệ 0xFeeL // hợp lệ 078 // không hợp lệ: 8 không phải là số hệ bát phân 032UU // không hợp lệ: không được lặp phần hậu tố
Sau đây là ví dụ về một số loại hằng nguyên:
85 // hệ 10 0213 // hệ 8 0x4b // hệ 16 30 // int 30u // unsigned int 30l // long 30ul // unsigned long
Hằng thực
Một hằng thực bao gồm một phần nguyên, một dấu thập phân, một phần thập phân và một phần mũ. Bạn có thể biểu diễn các hằng thực ở dạng thập phân hoặc dạng hàm mũ.
Nếu biểu diễn bằng cách sử dụng dạng thập phân, bạn phải đưa vào dấu thập phân, số mũ hoặc cả hai và nếu biểu diễn bằng cách sử dụng dạng mũ, bạn phải bao gồm phần nguyên, phần thập phân hoặc cả hai. Số mũ có dấu được thể hiện là bởi e hoặc E.
Dưới đây là một số ví dụ về các hằng thực:
3.14159 // hợp lệ 314159E-5L // hợp lệ 510E // không hợp lệ: phần mũ chưa đủ 210f // không hợp lệ: không có phần thập phân hoặc phần mũ .e55 // không hợp lệ: không có phần nguyên hoặc phần thập phân
Hằng boolean
Có hai giá trị boolean sau và chúng cũng là các từ khóa của chuẩn C++:
- Giá trị
true
(đúng) - Giá trị
false
(sai).
Ta không coi true là 1 và false là 0.
Hằng ký tự
Hằng ký tự được đặt trong cặp nháy đơn. Nếu hằng bắt đầu bằng L (chỉ viết hoa), thì đó là một hằng rộng (ví dụ: L'x') và phải được lưu trữ trong biến có kiểu wchar_t. Nếu không, nó là một ký tự hẹp (ví dụ: 'x') và có thể được lưu trữ trong một biến có kiểu char.
Một hằng ký tự có thể là một ký tự thuần túy (ví dụ: 'x'), một ký tự thoát (ví dụ: '\t') hoặc một ký tự phổ quát (ví dụ: '\u02C0').
Có một số ký tự trong C++ khi chúng đứng trước dấu gạch chéo ngược (\), chúng sẽ có ý nghĩa đặc biệt và chúng được sử dụng để biểu thị như dòng mới (\n) hoặc tab (\t). Dưới đây là danh sách một số mã trình tự thoát như vậy:
Chuỗi thoát | Ý nghĩa |
---|---|
\\ | ký tự \ |
\' | ký tự nháy đơn ' |
\" | ký tự nháy kép " |
\? | ký tự hỏi chấm ? |
\a | alert hoặc bell |
\b | xóa lùi |
\f | form feed |
\n | dòng mới |
\r | carriage return |
\t | tab ngang |
\v | tab dọc |
\ooo | số hệ 8 từ một đến ba chữ số |
\xhh . . . | số hệ 16 từ một chữ số |
Sau đây là ví dụ một số ký tự thoát:
#include <iostream> using namespace std; main() { cout << "Hello\tWorld\n\n"; return 0; }
Kết quả:
Hello World
Hằng chuỗi
Hằng chuỗi được đặt trong cặp nháy kép. Một chuỗi chứa các ký tự tương tự như các ký tự: ký tự thuần túy, chuỗi thoát và ký tự phổ quát.
Bạn có thể ngắt một dòng dài thành nhiều dòng bằng cách sử dụng các hằng chuỗi và phân tách chúng bằng cách sử dụng khoảng trắng.
Dưới đây là một số ví dụ về hằng chuỗi, tất cả ba ví dụ đều là chuỗi giống hệt nhau.
"hello, dear" "hello, \ dear" "hello, " "d" "ear"
Tạo hằng
Có hai cách tạo hằng trong C++ là:
- Sử dụng bộ tiền xử lý #define.
- Sử dụng từ khóa const.
Bộ tiền xử lý #define
Cú pháp:
#define tên_hằng giá_trị
Ví dụ:
#include <iostream> using namespace std; #define LENGTH 10 #define WIDTH 5 #define NEWLINE '\n' main() { int area; area = LENGTH * WIDTH; cout << area; cout << NEWLINE; return 0; }
Kết quả:
50
Từ khóa const
Cú pháp:
const kiểu_dữ_liệu tên_hằng = giá_trị;
Ví dụ:
#include <iostream> using namespace std; main() { const int LENGTH = 10; const int WIDTH = 5; const char NEWLINE = '\n'; int area; area = LENGTH * WIDTH; cout << area; cout << NEWLINE; return 0; }
Kết quả:
50
Lưu ý: Nên đặt tên hằng chỉ gồm các ký tự in hoa (CAPITAL).
Giải phóng thời gian, khai phóng năng lực