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

Đề tài: Đố vui về C++, giúp các bạn học C++ tốt hơn

  1. #1
    Ngày gia nhập
    11 2006
    Bài viết
    633

    Mặc định Đố vui về C++, giúp các bạn học C++ tốt hơn

    Câu đố đầu tiên:
    Tôi có 2 biểu thức:
    "abc" + 9 * 3
    "abc" + 4 – 1
    ở biểu thức thứ 1, máy tính ra được kết quả là chuỗi "abc27" nhưng ở biểu thức thứ 2 thì máy tính báo lỗi, tại sao vậy?
    Đã được chỉnh sửa lần cuối bởi huynguyen : 30-09-2007 lúc 08:52 AM.

  2. #2
    Ngày gia nhập
    07 2007
    Bài viết
    43

    vì làm j có lệnh j đâu mà chả lỗi, số 1 là bác tính, còn số 2 là máy tính thì lỗi còn j nữa
    Rongcon.com.vn

  3. #3
    Ngày gia nhập
    11 2006
    Bài viết
    633

    vì làm j có lệnh j đâu mà chả lỗi, số 1 là bác tính, còn số 2 là máy tính thì lỗi còn j nữa
    Bạn chưa hiểu ý đề bài.
    Bạn thử đưa biếu thức trên gán vào biến rồi xuất ra thì biết.
    Ví dụ nhé:
    string a;
    a = "abc" + 9 * 3; // lúc này a có giá trị là "abc27"
    a = "abc" + 4 – 1; // lúc này máy tính báo lỗi.

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

    còn cái kia thì theo tuần tự từ trái sang phải, nó + 4 vào chuỗi rồi thì làm j còn số nào đâu mà - 1, cái trên đúng là do nó thực hiện phép tính nhân trước rồi mới làm phép cộng, kô biết có đúng kô nhỉ
    Rongcon.com.vn

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

    Trích dẫn Nguyên bản được gửi bởi huynguyen Xem bài viết
    Bạn chưa hiểu ý đề bài.
    Bạn thử đưa biếu thức trên gán vào biến rồi xuất ra thì biết.
    Ví dụ nhé:
    string a;
    a = "abc" + 9 * 3; // lúc này a có giá trị là "abc27"
    a = "abc" + 4 – 1; // lúc này máy tính báo lỗi.

    Bó tay! Chắc máy tính của bác chưa được dạy phép toán trừ wá

    OoShinHaoO

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

    Mặc định Đố vui về C++, giúp các bạn học C++ tốt hơn

    Trích dẫn Nguyên bản được gửi bởi shinichi_haha Xem bài viết
    Bó tay! Chắc máy tính của bác chưa được dạy phép toán trừ wá
    sai rồi bạn ơi, phép + và - thì nó đồng hạng kô phân biệt nhưng máy nó sẽ tính từ trái qua phải nên nó sẽ + thêm 4 vào chuỗi do vậy sẽ kô còn số nào để trừ với 1 cả, nếu muốn phép tính này có kết quả phải cho thêm ngoặc vào nữa như thía ni (kô hỉu có j sai kô nhỉ)

    a= "abc"+(4-1);
    Rongcon.com.vn

  7. #7
    Ngày gia nhập
    09 2006
    Nơi ở
    /usr/share/.hack@
    Bài viết
    1,433

    Theo pete,
    phép tính thứ nhất : ta có ưu tiên toán tử (precedence) * cao hơn phép + nên 9 * 3 thực hiện trước sau đó thực hiện cộng : lúc này 27 bị explicit-conversion nên chuyển thành string lúc này là phép toán nối chuỗi.

    phép tính thứ hai : ưu tiên toán tử + - thì theo thứ tự ( associativity) , phép + thực hiện trước lúc này số 4 bị explicit-conversion thành chuỗi nên là phép toán nối chuối sau đó phép trừ : lúc này xảy ra exception : phép trừ chuỗi và một số nguyên : phép toán này không tồn tại và không thực hiện được. Lõi bị bắt.

    Đó là nguyên nhân. ^^
    None!

  8. #8
    Ngày gia nhập
    11 2006
    Bài viết
    633

    Rongcon và pete đều trả lời chính xác ^^, 2 cao thủ có khác.
    Đang suy nghĩ thêm các câu hỏi, bà con chờ nhé.
    P/S: Các cao thủ vào đây nhiều quá thì tiệm của anh mới mở 1 2 ngày chắc sập mất.

  9. #9
    Ngày gia nhập
    08 2006
    Nơi ở
    Hải Phòng
    Bài viết
    218

    Mục này đúng là hay thật, anh huynguyen tiếp tục nhé. Càng lúc em càng thấy khoái C, hết năm nay em vĩnh biệt Pascal luôn.

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

    Cho 2 đoạn code sau:
    Code:
    if (<test>) {
        <statement(s)>;
    } else if (<test>) {
        <statement(s)>;
    } else {
        <statement(s)>;
    }
    Code:
    if (<test>) {
        <statement(s)>;
    } else if (<test>) {
        <statement(s)>;
    } else if  (<test>) {
        <statement(s)>;
    }
    Nhìn vào thì ai cũng thấy đoạn code thứ 2 khác đoạn code thứ 1 bởi 1 chữ if sau chữ else cuối cùng. Điều đó thì quá đơn giản nhưng hãy suy nghĩ về mặt ngữ nghĩa thì giữa 2 đoạn code có khác nhau ko?

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

  1. Sự cố Nhờ mod chuyển giúp bài "Sắp xếp số thứ tự ngay trong bảng của 1 database?" từ MySQL sang MSSQL giúp!
    Gửi bởi hu-xeko trong diễn đàn Ý kiến, đề xuất và khiếu nại
    Trả lời: 1
    Bài viết cuối: 12-03-2012, 07:48 PM
  2. Mới nhập môn khó quá , cần trợ giúp [Vấn đề của bạn cần muốn giúp là gì ?]
    Gửi bởi cuingo212 trong diễn đàn Nhập môn lập trình C#, ASP.NET
    Trả lời: 5
    Bài viết cuối: 22-10-2011, 08:43 AM
  3. Chương trình giúp một học sinh cấp 1 học phép nhân, xử lý hàm rand, giúp mình với?
    Gửi bởi chankx trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 2
    Bài viết cuối: 12-05-2009, 08:52 PM
  4. Code giúp add một key vào registry, ai giúp em?
    Gửi bởi olavien trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 5
    Bài viết cuối: 12-12-2007, 08:45 AM

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