Hằng số (constant) hướng đến những giá trị cố định mà chương trình không thể thay đổi trong quá trình thực thi. Những giá trị cố định đó cũng được gọi là literals.
Hằng số có thể là một kiểu dữ liệu bất kỳ nào như kiểu dữ liệu: số nguyên, số thực, ký tự hay chuỗi. Có những hằng số kiểu liệt kê (enumeration).
Một hằng số có thể được coi như một biến thường ngoài việc giá trị của nó không thể thay đổi sau khi được định nghĩa.
Hằng số nguyên trong C
Giá trị hằng số nguyên có thể là hệ thập phân (decimal), hệ bát phân (octal) hoặc hệ thập lục phân (hexadecimal). Tiền tố (prefix) xác định cơ bản hay cơ số: 0x hay 0X cho kiểu hexadecimal (hệ 16), 0 cho octal (hệ 8), và không có gì là hệ thập phân.
Một giá trị hằng số có thể có phần hậu tố (suffix) là sự kết hợp của U và L, cho kiểu Unsigned và kiểu Long. Phần kết thúc có thể là chữ hoa hoặc chữ thường theo bất cứ thứ tự nào.
Dưới đây là ví dụ cho kiểu hằng số nguyên:
212 /* la hop le */ 215u /* la hop le */ 0xFeeL /* la hop le */ 078 /* Khong hop le: 8 khong la ky so trong he bat phan (octal) */ 032UU /* Khong hop le: ban khong the lap lai hau to (suffix) */
Dưới đây là các ví dụ khác với một vài cách khai báo với kiểu số nguyên:
85 /* he thap phan */ 0213 /* he bat phan (octal) */ 0x4b /* he thap luc phan (hexadecimal) */ 30 /* int */ 30u /* unsigned int */ 30l /* long */ 30ul /* unsigned long */
Hằng số thực trong C
Một hằng số thực dấu chấm động có một phần nguyên, một giá trị decimal, phần phân số và phần mũ. Bạn có thể biểu diễn giá trị dấu chấm động trong kiểu thập phân và kiểu phân số.
Khi biểu diễn giá trị với định dạng thập phân, bạn phải thêm phần integer, phần mũ hoặc cả hai. Phần mũ được viết bởi e hoặc E.
Dưới đây là vài ví dụ cho phần dấu chấm động:
3.14159 /* Hop le */ 314159E-5L /* Hop le */ 510E /* Khong hop le: phan mu chua hoan thien */ 210f /* Khong hop le: khong co phan decimal va phan mu */ .e55 /* Khong hop le: thieu phan phan so va phan nguyen */
Hằng ký tự trong C
Phần ký tự được đóng mở trong dấu nháy đơn ('), ví dụ 'x' và có thể được lưu trữ trong một biến đơn giản kiểu char.
Một ký tự có thể là một ký tự thường (ví dụ 'x') hoặc chuỗi thoát (vd: '\t'), hoặc một ký tự phổ thông (vd: '\u02C0').
Có những ký tự cụ thể trong C khi bắt đầu bằng dấu \ sẽ có ý nghĩa đặc biệt và được dùng để biểu diễn dòng mới (\n), tab mới (\t). Dưới đây là danh sách các ký tự đặc biệt:
Dãy thoát | Ý nghĩa |
---|---|
\\ | Ký tự \ |
\' | Ký tự ' |
\" | Ký tự " |
\? | Ký tự ? |
\a | Tiếng chuông |
\b | Backspace |
\f | Form feed |
\n | Dòng mới |
\r | Carriage return |
\t | tab ngang |
\v | tab dọc |
\ooo | Số trong cơ số 8 của 1 đến 3 chữ số |
\xhh . . . | Số thập lục phân của một hoặc nhiều chữ số |
Sau đây là ví dụ để chỉ một số ký tự dãy thoát:
#include
int main()
{
printf("Hoc\tLap\tTrinh\tC\tTai\tHoctv\n\n");
printf("===========================\n");
printf("Hoctv chuc cac ban hoc tot! \n");
return 0;
}
Hằng chuỗi trong C
Hằng chuỗi được bao với dấu ngoặc kép "". Một chuỗi bao gồm các ký tự tương tự với hằng ký tự: ký tự thuần, chuỗi thoát và ký tự phổ thông.
Bạn có thể chia các dòng dài thành nhiều dòng sử dụng các giá trị chuỗi và ngăn cách chúng bởi các khoảng trắng.
Dưới đây là một vài ví dụ với hằng số chuỗi. Ba chuỗi dưới đây có giá trị giống nhau:
"hello, vietnam" "hello, \ vietnam" "hello, " "v" "ietnam"
Định nghĩa hằng số trong C
Có 2 cách đơn giản trong C để định nghĩa hằng số:
- Sử dụng bộ tiền xử lý #define.
- Sử dụng từ khóa const.
Sử dụng bộ tiền xử lý #define trong C
Dưới đây là mẫu để sử dụng bộ tiền xử lý #define để định nghĩa một hằng số:
#define dinh_danh gia_tri
Dưới đây là ví dụ chi tiết:
#include
#define CHIEUDAI 15
#define CHIEURONG 12
#define NEWLINE '\n'
int main()
{
int dientich;
dientich = CHIEUDAI * CHIEURONG;
printf("Dien tich hinh chu nhat la: %d", dientich);
printf("%c", NEWLINE);
printf("===========================\n");
printf("Hoctv chuc cac ban hoc tot! \n");
return 0;
}
Biên dịch và chạy chương trình C trên sẽ cho kết quả:
Sử dụng từ khóa const trong C
Bạn có thể sử dụng tiền tố const để khai báo các hằng số với một kiểu cụ thể như sau:
const kieu_du_lieu ten_bien = gia_tri;
Dưới đây là ví dụ chi tiết:
#include
int main()
{
const int CHIEUDAI = 15;
const int CHIEURONG = 12;
const char NEWLINE = '\n';
int dientich;
dientich = CHIEUDAI * CHIEURONG;
printf("Dien tich hinh chu nhat la: %d", dientich);
printf("%c", NEWLINE);
printf("===========================\n");
printf("Hoctv chuc cac ban hoc tot! \n");
return 0;
}
Biên dịch và chạy chương trình C trên sẽ cho kết quả giống như trên.
Ghi chú trong thực tế lập trình chúng ta thường đặt tên hằng là CHỮ HOA.