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ố 20 kết quả

Đề tài: compiler Warning: Unreachable code và chạy sai trong khi code đúng. Vì sao?

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

    Question compiler Warning: Unreachable code và chạy sai trong khi code đúng. Vì sao?

    mình ko hiểu nổi tại sao lại warning như vậy, trong khi về cấu trúc code mình thấy đúng.
    Code:
    int timBSCNN(int x,int y)  // TÌm bội số chung nhỏ nhất của 2 số
    {
      int a,b;
      if(x>y) // Trường hợp 1
        
        if(x%y==0) return x;
        else
           for(int i=2*x;i>0;i++)
    	  if((i%x==0)&&(i%y==0))
    	    {
    	       b=i;
    	       break;
    	    }
    	       return b;
    
      if(y>=x) // Trường hợp 2 compiler báo Warning tại đây
        
        if(y%x==0) return y;
        else
           for(int i=2*y;i>0;i++)
    	  if((i%y==0)&&(i%x==0))
    	    {
    	      a=i;
    	      break;
    	    }
    	      return a;
    
    }
    Nếu nhập cho TH1 là x> y thì xuất BSCNN của x và y là 1 KQ đúng. Còn nếu nhập cho TH2 là x<=y thì xuất sai. Quả thật mình ko hiểu nổi đã xảy ra vấn đề gì.
    Vì mới học lập trình nên kiến thức còn nong cạn, hạn hẹp. Mong đc đàn anh chỉ bảo thêm!

  2. #2
    Ngày gia nhập
    10 2011
    Bài viết
    552

    Bài chạy sai mà lại khẳng định là " trong khi code đúng " -> ^^ khi nào chạy đúng mới bảo code đúng dc nhé (mà cũng chưa chắc đã đúng)

    Lỗi là ở đây. Viết lại cho đàng hoàng thế này cho dễ nhìn
    C++ Code:
    1.    else
    2.        for(int i=2*x;i>0;i++)
    3.           if((i%x==0)&&(i%y==0))
    4.           {
    5.                b=i;
    6.                break;
    7.           }
    8.    return b;// <---- Để chữ return ra đây thì nhìn ra rồi chứ :D
    Ko đóng khóa mở khóa cho đàng hoàng và thồi thụt linh tinh nên như thế đấy
    Qua khám phá mình thấy rằng code của bạn viết : Có biết bấm tab mà chỉ tab cái đầu, mấy cái sau ko tab nữa mà bấm space để thụt vào
    Um Mani Padme Hum...!!

  3. #3
    Ngày gia nhập
    01 2012
    Bài viết
    10

    Trích dẫn Nguyên bản được gửi bởi clchicken Xem bài viết
    C++ Code:
    1.    else
    2.        for(int i=2*x;i>0;i++)
    3.           if((i%x==0)&&(i%y==0))
    4.           {
    5.                b=i;
    6.                break;
    7.           }
    8.    return b;// <---- Để chữ return ra đây thì nhìn ra rồi chứ :D
    Ko đóng khóa mở khóa cho đàng hoàng và thồi thụt linh tinh nên như thế đấy
    Sư phụ có thể nói rõ hơn đc ko?

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

    Bạn nhìn lên lại code bạn ở cái chỗ return b ; Đánh giá lệnh đó như thế nào so với các lệnh phía trên nó ? Có bị ảnh hưởng gì ko ?
    Rồi nhìn lại bài của mình sẽ rõ
    Um Mani Padme Hum...!!

  5. #5
    Ngày gia nhập
    01 2012
    Bài viết
    10

    Trích dẫn Nguyên bản được gửi bởi clchicken Xem bài viết
    Bạn nhìn lên lại code bạn ở cái chỗ return b ; Đánh giá lệnh đó như thế nào so với các lệnh phía trên nó ? Có bị ảnh hưởng gì ko ?
    Rồi nhìn lại bài của mình sẽ rõ
    em vẫn chưa nhìn ra đc em chỉ thấy nó khác ở mấy cái khoảng cách thôi

  6. #6
    Ngày gia nhập
    05 2010
    Bài viết
    3

    Mặc định compiler Warning: Unreachable code và chạy sai trong khi code đúng. Vì sao?

    Code của bạn sẽ ko bao giờ đến đc th2. Vì lệnh return b; ngang hàng vs lệnh if đầu tiên. Nếu k hiểu nữa thì đọc lại phần khối lệnh đi

  7. #7
    Ngày gia nhập
    04 2009
    Nơi ở
    Gầm cầu
    Bài viết
    2,230

    chạy sai trong khi code đúng.
    bạn quên mất 2 điều :

    1. máy tính luôn luôn đúng
    2. nếu máy tính cho kết quả sai thì chỉ có coder sai


  8. #8
    Ngày gia nhập
    01 2012
    Bài viết
    10

    Trích dẫn Nguyên bản được gửi bởi tinhve Xem bài viết
    Code của bạn sẽ ko bao giờ đến đc th2. Vì lệnh return b; ngang hàng vs lệnh if đầu tiên. Nếu k hiểu nữa thì đọc lại phần khối lệnh đi
    Hãy chỉ ra hướng giải quyết cụ thể cho mình. rất biết ơn bạn!
    <cả buổi chiều mình đã ngồi đọc lại từng dòng, tài liệu cũng xem lại từng trang mà vẫn chưa ngộ ra đc điều gì>

  9. #9
    Ngày gia nhập
    10 2011
    Bài viết
    552

    Bạn cho trồi cái return b; ra trước như cái code trên của mình bảo (là để cho dễ nhìn) thì bạn sẽ nhìn ra thôi
    Um Mani Padme Hum...!!

  10. #10
    Ngày gia nhập
    01 2012
    Bài viết
    10

    Trích dẫn Nguyên bản được gửi bởi clchicken Xem bài viết
    Bạn cho trồi cái return b; ra trước như cái code trên của mình bảo (là để cho dễ nhìn) thì bạn sẽ nhìn ra thôi
    Mình sai ở chỗ là cho return đến 2 giá trị?

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

  1. Code red black tree trong c++ chạy không đúng?
    Gửi bởi squall_ttthp trong diễn đàn Thảo luận, góp ý code C/C++ của bạn
    Trả lời: 3
    Bài viết cuối: 03-05-2013, 04:33 PM
  2. Algorithm Compiler code bằng C# kèm theo Code Snippet
    Gửi bởi kenshin47 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 0
    Bài viết cuối: 19-08-2011, 10:28 PM
  3. Đoạn code tìm hàng có tổng max trong ma trận chạy không đúng, sửa thế nào??
    Gửi bởi zodjac1990 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 10
    Bài viết cuối: 23-07-2011, 12:35 AM
  4. Lỗi phát sinh Unreachable Code Detected
    Gửi bởi huuduytk7 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 3
    Bài viết cuối: 07-06-2011, 06:17 PM
  5. Hỏi về lỗi phát sinh khi combine code ( unreachable code detected)
    Gửi bởi dkhoa19869 trong diễn đàn Nhập môn lập trình C#, ASP.NET
    Trả lời: 2
    Bài viết cuối: 11-03-2009, 03:39 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