Trang 1 trên tổng số 2 12 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 13 kết quả

Đề tài: các dạng của vòng lặp vô hạn ?

  1. #1
    Ngày gia nhập
    10 2007
    Bài viết
    7

    Mặc định các dạng của vòng lặp vô hạn ?

    Bạn nào biết thì giúp mình nhé :
    Vòng lặp vô hạn có mấy kiểu, ngoài while(1) mà sách nào cũng nói, còn mấy dạng kia thì ko thấy!
    Hỏi thêm nữa là : vòng lặp vô hạn trên chỉ dùng cho while hay dùng cả cho for và do..while.
    Cảm ơn rất nhiều .

  2. #2
    Ngày gia nhập
    07 2007
    Nơi ở
    Sơn La
    Bài viết
    133

    Trích dẫn Nguyên bản được gửi bởi heaven007 Xem bài viết
    Bạn nào biết thì giúp mình nhé :
    Vòng lặp vô hạn có mấy kiểu, ngoài while(1) mà sách nào cũng nói, còn mấy dạng kia thì ko thấy!
    Hỏi thêm nữa là : vòng lặp vô hạn trên chỉ dùng cho while hay dùng cả cho for và do..while.
    Cảm ơn rất nhiều .
    Tại sao ở trên bạn lại dùng while(1); ?.
    Nếu bạn biết thì bạn hãy tìm xem khi nào nó như vậy với for loop, do...while loop là ok.
    Và khi đó bạn sẽ hiểu tại sao nên dùng while(1).
    Trao đổi kiến thức sẽ giúp ta tiếp cận nhanh với kiến thức.

  3. #3
    Ngày gia nhập
    10 2006
    Nơi ở
    In Your Bugs
    Bài viết
    823

    A nếu mà nói lặp vô tận thì ko chỉ hạn hẹp ở mấy cái vòng lặp cơ bản đâu. Có nhiều cái khác nữa.
    ex:
    void A()
    {
    A();
    }

    hay:
    void A()
    { B();}
    void B()
    {A();}

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

    Trích dẫn Nguyên bản được gửi bởi NT_OnlyLove Xem bài viết
    Tại sao ở trên bạn lại dùng while(1); ?.
    Nếu bạn biết thì bạn hãy tìm xem khi nào nó như vậy với for loop, do...while loop là ok.
    Và khi đó bạn sẽ hiểu tại sao nên dùng while(1).
    Mình mới học C ở trường đc mấy tháng nên còn non lắm, cái while(1) này thầy có nói và sách nào cũng nói, còn mấy dạng # ko thấy nói .
    ***************
    void A()
    {
    A();
    }

    hay:
    void A()
    { B();}
    void B()
    {A();}
    *********************
    Anh kidkid có thể giải thích rõ giúp em dc ko a.Chẳng hạn nó nằm ở vị trí nào, cách thức nó hd thế nào ?

  5. #5
    Ngày gia nhập
    09 2006
    Bài viết
    711

    Hai đoạn code trên của heaven007 sẽ làm tràn stack sau khoãng 260000 lần call, app crash ngay, và nó không phải là loop vô tận, loop cho app die thì đúng hơn

  6. #6
    Ngày gia nhập
    10 2006
    Nơi ở
    In Your Bugs
    Bài viết
    823

    Mặc định các dạng của vòng lặp vô hạn ?

    @TQN: Hay thế, dù em viết em cũng chả biết vì sao sau khoảng 260.000 call thì die. Anh TQN giải thích cái này giúp em coi.

    @Heaven: Như thế này nhé hàm A() đầu tiên nó gọi lại chính nó do đó nó cứ chạy mãi, dung lượng lưu trữ nạp vào stack mà ko có điểm dừng nên die.
    Cái hàm B() thì cũng tương tự tuy nhiên biến tấu chút, thế này nhé A() chỉ thoát ra khi và chỉ khi hàm B() chạy xong. Nhưng trong thân hàm B() thì nó gọi lại A() có nghĩa là tự bản thân B() đã không thể thoát ra cho đến khi A() làm việc xong. THành thử 2 thèng nó gọi lẫn nhau. Thằng A() bảo rằng tao khoái cái stack rồi, tao chỉ thoát khi thằng B nó thoát. Thằng B cũng thế nó kêu tao không thích làm kẻ dẫn đầu, nó chỉ thoát khi A đã thoát. Thế đấy. Nhưng vì sao, làm thế nào để tính số lần gọi thì bị crash thì tớ chịu. Hay là lấy dung lượng đưa lên stack so với dung lượng stack chia ra thì có số lần gọi nhỉ ?

  7. #7
    Ngày gia nhập
    06 2007
    Nơi ở
    một nơi xa xăm...
    Bài viết
    127

    Cái này chủ yếu dựa vào cơ chế gọi chương trình con của win.Hình như là vậy....

  8. #8
    Ngày gia nhập
    10 2007
    Nơi ở
    HCMUNS
    Bài viết
    459

    Cái này die là do tràn stack. Còn cái số 260.000 không biết ở đâu ra

    làm thế nào để tính số lần gọi thì bị crash thì tớ chịu
    Chắc là dùng biến đếm :P
    Keep moving forward!

    ... Retired ...

  9. #9
    Ngày gia nhập
    06 2007
    Nơi ở
    một nơi xa xăm...
    Bài viết
    127

    Trích dẫn Nguyên bản được gửi bởi nhc1987 Xem bài viết
    Cái này die là do tràn stack. Còn cái số 260.000 không biết ở đâu ra



    Chắc là dùng biến đếm :P
    Đếm làm sao được.Có lẽ anh ấy dựa vào dung lượng stack để tính toán

  10. #10
    Ngày gia nhập
    09 2006
    Bài viết
    711

    Trên Win32 stack size = 1M, submit = 4K (từng page 1). Lệnh call phải push return address vào stack, return address có size = 4 byte, 1M / 4byte là số lần call sẽ dẫn tới crash, gần đúng thôi, vì trên stack còn lại không đúng chính xác là 1M, OS, CRTL đã chiếm 1 số.

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

  1. Kỹ thuật C++ Nhập và gán 1 kí tự trong vòng lặp sao cho khi không nhập kí tự thì vòng lặp lại chạy tiếp.
    Gửi bởi note194 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: 12-08-2013, 09:11 PM
  2. Lập trình C++ giá trị của xâu trong vòng lặp và ngoài vòng lặp khác nhau
    Gửi bởi virus93ttll trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 17
    Bài viết cuối: 14-05-2011, 02:43 PM
  3. Code cài đặt DSLK đơn vòng và kép vòng trên C++. Thêm 1 phần tử sau 1 phần tử trong DSLK đơn/kép
    Gửi bởi hoanghieu.fit.hcmus trong diễn đàn Thảo luận, góp ý code C/C++ của bạn
    Trả lời: 2
    Bài viết cuối: 09-04-2011, 02:54 PM
  4. Tìm max (Sử dụng vòng lặp)
    Gửi bởi cr9 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 13
    Bài viết cuối: 08-05-2010, 10:53 AM
  5. Vòng lặp for lồng nhau, giúp tớ hiểu rõ hơn về vòng lặp for lồng nhau?
    Gửi bởi bk7million trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 11
    Bài viết cuối: 29-04-2009, 07:46 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