Trang 1 trên tổng số 4 123... Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 31 kết quả

Đề tài: [ Solved ]#define......??

  1. #1
    Ngày gia nhập
    03 2008
    Nơi ở
    Hồ chí minh
    Bài viết
    134

    Smile [ Solved ]#define......??

    cho mình hỏi đoạn code khai báo sau có nghĩa là gì vậy,ai biết chỉ mình với nha,mình chẳng hiểu lắm.
    Code:
    #define Max 20
    #define ESC 27
    #define ENTER 13
    #define BkSp 8
    #define LEFT 75
    #define RIGHT 77
    #define UP 72
    #define DOWN 80
    Every step I'm taking
    Every move I make
    Feels lost with no direction
    My faith is shaking
    But I gotta keep trying.

  2. #2
    Ngày gia nhập
    04 2008
    Bài viết
    336

    cái này là 1 kiểu định nghĩa hằng số đấy bạn.
    vd như ở trên thay vì ghi
    Code:
    char k= getch();
    switch(k)
    {
     case 75:
     ....
     case 77:
     ....
     case ....
    }
    thì có thể viết là
    Code:
    char k= getch();
    switch(k)
    {
     case LEFT:
     ....
     case RIGHT:
     ....
     case ....
    }
    như thế sẽ đỡ phải nhớ cụ thể.
    code ra gió bão

  3. #3
    Ngày gia nhập
    03 2008
    Nơi ở
    Hồ chí minh
    Bài viết
    134

    mình vẫn chưa hiểu lắm,bạn giải thích cụ thể từng dòng được không?
    Every step I'm taking
    Every move I make
    Feels lost with no direction
    My faith is shaking
    But I gotta keep trying.

  4. #4
    Ngày gia nhập
    09 2007
    Bài viết
    724

    Mấy cái này là bạn dùng để định nghĩa một vài Macro đó bạn.

    nó được dùng để định nghĩa một "mặt nạ" cho một cái khác.
    ví dụ trong ví dụ trên của bạn #define Max 20 thì ở những nơi có liên quan tới số 20 trong đoạn code mà bạn code ở dưới thì bạn sẽ thay thế số 20 bằng MAX. cái này có lợi khi bạn cần thay đổi code của bạn.

    giả sử một đề bài yêu cầu nhập vào một mảng tối đa là 20 phần tử. sau đó người ta lại thay đổi yêu cầu là chỉ được nhập tối đa là 15 phần tử thôi. lúc này bạn chỉ thay đổi lại cái define này thành: #define MAX 15 chỉ cần sửa chổ này thôi không cần phải vô code sửa. nó còn ứng dụng trong một số việc khác nữa.



    chúc bạn thành công.

  5. #5
    Ngày gia nhập
    04 2008
    Bài viết
    336

    khi khai báo 1 mảng chẳng hạn
    Code:
    int i,j,a[10][10];
    for(i=0;i<10;++i)
    {
     for(j=0;j<10;++j)
     {
     //làm gì đó
     }
    }
    bạn có thể viết thành
    Code:
    #define MAX 10
    int i,j,a[MAX][MAX];
    for(i=0;i<MAX;++i)
    {
     for(j=0;j<MAX;++j)
     {
     //làm gì đó
     }
    }
    nếu vì lí do gì đó bạn cần thay đổi 10 thành 20 chẳng hạn ko lẽ bạn phải sửa từng số 10 thành 20 ?
    do đó bạn chỉ cần sửa thành
    #define MAX 20
    code ra gió bão

  6. #6
    Ngày gia nhập
    09 2007
    Bài viết
    724

    Mặc định [ Solved ]#define......??

    Mấy cái này là bạn dùng để định nghĩa một vài Macro đó bạn.
    Ngoài mấy cái nêu trên thằng define nó còn có khả năng define một hàm dùng để thay thế hàm khác, một kiểu khác.
    ví dụ bạn không muốn dùng kiểu SoNguyen thay cho int.
    thì bạn làm như sau:
    Code:
    #define      SoNguyen         int
    nói tóm lại là thằng này trong C một thời gian giang hồ rất thích dùng cái này.
    ko biết trong C# tại sao bác Bill lại bỏ cái này đi.
    chứ trong bản VC6 mình cũng rất hay xài cái thằng cu define này vì nó rất tiện.

    chúc bạn thành công.
    Đã được chỉnh sửa lần cuối bởi zkday2686 : 18-09-2008 lúc 11:46 PM.

  7. #7
    Ngày gia nhập
    07 2008
    Nơi ở
    /media/Anime
    Bài viết
    2,288

    Nói chung define có thể coi như một phép thay thế chuỗi trước khi đem biên dịch. ví dụ như #define MAX 30 thì trong code có những chuỗi con là "MAX" đều sẽ được thay thế thành chuỗi "30" hết.
    Càng yêu mèo thì mèo càng mập. Mèo càng mập ta lại càng yêu.

  8. #8
    Ngày gia nhập
    02 2008
    Bài viết
    88

    Trích dẫn Nguyên bản được gửi bởi meoconlongvang Xem bài viết
    Nói chung define có thể coi như một phép thay thế chuỗi trước khi đem biên dịch. ví dụ như #define MAX 30 thì trong code có những chuỗi con là "MAX" đều sẽ được thay thế thành chuỗi "30" hết.
    vậy sao ko dùng const cho tiện nhỉ? 2 cái này có khác gì nhau ko
    Mình từ Caulacbovb qua)
    Giã từ VB6 đến với VB.Net, C# và Java.

  9. #9
    Ngày gia nhập
    07 2008
    Nơi ở
    /media/Anime
    Bài viết
    2,288

    Khác hẳn chứ, define là phép thay thế chuỗi. Nếu bạn dùng #define MAX 30 thì khi chạy dòng code printf("aMAXb") nó sẽ ra "a30b", còn const thì vẫn ra "aMAXb"
    Càng yêu mèo thì mèo càng mập. Mèo càng mập ta lại càng yêu.

  10. #10
    Ngày gia nhập
    02 2008
    Bài viết
    88

    Trích dẫn Nguyên bản được gửi bởi meoconlongvang Xem bài viết
    Khác hẳn chứ, define là phép thay thế chuỗi. Nếu bạn dùng #define MAX 30 thì khi chạy dòng code printf("aMAXb") nó sẽ ra "a30b".
    Ec, vậy thì hơi bất tiện nhỉ.
    Giả sử mình muốn printf("aMAXb") sẽ ra là aMAXb nhưng theo bạn nói nó lại ra a30b thì tiêu.
    Mình từ Caulacbovb qua)
    Giã từ VB6 đến với VB.Net, C# và Java.

Các đề tài tương tự

  1. [JAVASCRIPT] Tìm define của hàm mặc định !
    Gửi bởi Fabio_cannavaro trong diễn đàn Nhập môn lập trình C#, ASP.NET
    Trả lời: 0
    Bài viết cuối: 23-10-2013, 01:44 PM
  2. Bài tập C Hỏi về hàm define
    Gửi bởi so13cohoi trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 5
    Bài viết cuối: 25-12-2012, 08:19 PM
  3. Lập trình C++ Cách hoạt động của câu lệnh define
    Gửi bởi nquangkhai trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 3
    Bài viết cuối: 25-03-2010, 11:36 PM
  4. về define và undef :-?? ?
    Gửi bởi ZuzooVn trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 3
    Bài viết cuối: 21-08-2009, 09:30 PM
  5. #define, công dụng và cách thức của #define
    Gửi bởi 7261819 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 3
    Bài viết cuối: 20-04-2009, 09:21 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn