Từ 1 tới 3 trên tổng số 3 kết quả

Đề tài: kiểu dữ liệu

  1. #1
    Ngày gia nhập
    04 2011
    Bài viết
    3

    Angry kiểu dữ liệu

    float tong(int n)
    {
    int i;
    float s=0;
    for(i=1; i<=n; i++)
    {
    s=s+i/(i+1);
    }
    return s;

    Khi mình chạy chương trình thì kết quả đều cho về 0
    khi mình thay đổi kiểu dữ liệu của i sang float thì cho kết quả đúng.
    Nhưng mình đọc trong sách thì họ nói là kiểu int sẽ tự chuyển sang kiểu float trong biểu thức s=s+i/(i+1); và cho kiểu dữ liệu cuối cùng là float.
    Về mặt lý thuyết thì chương trình trên không sai,
    vậy ở đây sách sai hay chương trình của mình sai.
    mong các bạn giải thích giùm. thanks.

  2. #2
    Ngày gia nhập
    07 2010
    Nơi ở
    chỗ kín
    Bài viết
    446

    đấy là những phép tính có số float thì mới tự chuyển
    biểu thức
    s = s+i\(i+1)

    theo thứ tự ưu tiên phải tính:
    i+1 // không cần ép
    i\([i+1]) // vẫn không ép dẫn đến kết quả sai
    s + [i\(i+1)] // lúc này trình biên dịch mới ép. nhưng ko có tác dụng gì nữa

  3. #3
    Ngày gia nhập
    04 2011
    Bài viết
    3

    uhm. Hay, thế mà không nghĩ ra

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