Nên sử dụng #define hay const để định nghĩa hằng trong C?

Trình em vẫn còn gà nên có chỗ vẫn chưa thông, người ta bảo là không nên dùng #define vì nó khó kiểm soát và debug, với kinh nghiệm debug cái chương trình bé tí thì em vẫn chưa thể hiểu là nó khó chỗ nào. Mong được chỉ bảo thêm ạ.

Bạn thử đoán xem output của 2 dòng sau là gì:

#define D_TEN 5+5
const int C_TEN = 5+5;

printf("%d\n", D_TEN * D_TEN);
printf("%d\n", C_TEN * C_TEN);
6 Likes

Dòng 1 là 35
Dòng 2 là 100
Chuẩn chưa ạ

À em thông hơn được tí rồi

Một ví dụ nghịch ngợm khác:

#define true false

int main() {
    if (true) {
        printf("You're smart\n");
    } else {
        printf("You're dumb\n");
    }
}

Đổi lại

const bool true = false; // có ổn không ta?
3 Likes

Hahaaaa. Cái này là thua luôn

cái const nó có lẽ nó không cho làm vậy vì trùng từ khoá. Em thông hơn lúc nãy rồi. Cám ơn anh nhiều nha

1 Like

Cú pháp khai báo const

const <kiểu> <tên_biến> = <giá_trị>;

tên biến phải tuân thủ đúng quy tắc (trong đó không được trùng các từ khoá cho trước), không thể dùng “có lẽ” ở đây được.

5 Likes

Yepp :sweat_smile: :sweat_smile:

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?