Hằng số trong lập trình C

Hằng số thực có mấy cách biểu diễn trong C? Dưới đây là mọi điều bạn cần biết về hằng số hay constants trong ngôn ngữ C.

Hằng số trong C là gì?

Nếu không muốn người khác (hay bản thân bạn) thay đổi các giá trị biến hiện có, hãy dùng từ khóa const (điều này sẽ khai báo biến dưới dạng “constant”, có nghĩa không thể thay đổi và chỉ đọc):

Ví dụ:

const int myNum = 15; // myNum will always be 15
myNum = 10; // error: assignment of read-only variable 'myNum'

Bạn luôn thay đổi được khai bao biến dưới dạng hằng số khi có các giá trị không thể thay đổi.

Ví dụ:

const int minutesPerHour = 60;
const float PI = 3.14;

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ự ?
\aTiếng chuông
\bBackspace
\fForm feed
\nDòng mới
\rCarriage return
\ttab ngang
\vtab dọc
\oooSố 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 <stdio.h>

int main()
{
   printf("Hoc\tLap\tTrinh\tC\tTai\tQTM\n\n");
   printf("===========================\n");
   printf("QTM chuc cac ban hoc tot! \n");
   return 0;
}

Biên dịch và chạy chương trình C trên để xem kết quả

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 <stdio.h>

#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("QTM chuc cac ban hoc tot! \n");
   return 0;
}

Biên dịch và chạy chương trình C trên để xem 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 <stdio.h>

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("QTM 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.

Lưu ý khi sử dụng hằng số trong C

Khi khai báo một biến hằng số, nó phải được gắn với một giá trị:

Ví dụ:

const int minutesPerHour = 60;

Tuy nhiên, điều này sẽ không hoạt động:

const int minutesPerHour;
minutesPerHour = 60; // error

Nhìn chung, cách dùng hằng số trong C không quá khó. Bạn chỉ cần chịu khó thực hành theo các mẫu ví dụ kể trên. Khai báo bằng chữ in hoa được khuyến khích. Dù không bắt buộc nhưng hữu ích cho khả năng đọc code và phổ biến với lập trình viên bằng ngôn ngữ C.

Bài trước: Biến trong lập trình C

Bài tiếp: Lớp lưu trữ trong C

Thứ Bảy, 24/12/2022 11:48
55 👨 5.006
1 Bình luận
Sắp xếp theo
  • Code Ngầu
    Code Ngầu hữu ích
    Thích Phản hồi 01/07/20
    ❖ Lập trình C