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

Đề tài: [C] Thắc mắc về vấn đề cơ bản của C

  1. #1
    No Avatar
    tfx Khách

    Mặc định [C] Thắc mắc về vấn đề cơ bản của C

    Code:
    void main()
    {
     int i=5;
     printf("%d %d %d",i++,i++,i++);
    }
    Khi chạy ct này thì trong BC 5 nó xuất 7 6 5, trong VC6 nó lại xuất 5 5 5, còn VC 2k5 thì xuất 7 6 5. Bác nào giải thích hộ em tí

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

    "7 6 5" thì là do thứ tự thực hiện là từ phải sang trái còn "5 5 5" thì không hiểu

  3. #3
    No Avatar
    tfx Khách

    dùng VC6 nó lại ra 5 5 5 như thế mới khó hiểu chứ T_T

  4. #4
    Ngày gia nhập
    07 2006
    Nơi ở
    Hanoi, Vietnam
    Bài viết
    2,750

    dùng VC6 nó lại ra 5 5 5 như thế mới khó hiểu chứ T_T
    Vụ này thì phải gửi email hỏi bác bill xem sao?

    Và nguyên nhân đơn giản có thể là bác Bill xây dựng VC++ chẳng theo một chuẩn nào cả.
    Email: admin[@]congdongcviet.com | CC to: info[@]congdongcviet.com
    Phone: 0972 89 7667 (Office: 04 6329 2380)
    Yahoo & Skype: dreaminess_world (Vui lòng chỉ rõ mục đích ngay khi liên hệ, cảm ơn!)

    Một người nào đó coi thường ý thức kỷ luật cũng có nghĩa là người đó đã coi thường tương lai số phận của chính bản thân người đó. Những người coi thường ý thức kỷ luật sẽ không bao giờ có được sự thành công trong sự nghiệp!

  5. #5
    Ngày gia nhập
    03 2007
    Bài viết
    5

    Trích dẫn Nguyên bản được gửi bởi Dreaminess Xem bài viết
    Vụ này thì phải gửi email hỏi bác bill xem sao?

    Và nguyên nhân đơn giản có thể là bác Bill xây dựng VC++ chẳng theo một chuẩn nào cả.
    tốt nhất là nên dùng BC 3.1 để lập trình vì VC6 này hơi bị rắc rối, ví dụ như float trong BC3.11 chạy rất êm, nhưng qua tới VC6 thì hơi bị rối, thậm chí chạy lỗi tùm lum, mình từng gặp trường hộ này nhiều rồi, vì thế mà phải float trong vc6 thành double thì mới ok.

    cũng vì thế mà ở KHTN mới có chương trình dạy về C++ thông thường và VC++

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

    Mặc định [C] Thắc mắc về vấn đề cơ bản của C

    ặc !
    void main()
    {
    int i=5;
    printf("%d %d %d",i++,i++,i++);
    }
    Trong Borland thì i++ thì nó sẽ in ra i , sau đó tăng i lên 1 đơn vị
    Còn VC6 thì (í lạ nhỉ ) để về nhà chạy thử

  7. #7
    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 tfx Xem bài viết
    Code:
    void main()
    {
     int i=5;
     printf("%d %d %d",i++,i++,i++);
    }
    Khi chạy ct này thì trong BC 5 nó xuất 7 6 5, trong VC6 nó lại xuất 5 5 5, còn VC 2k5 thì xuất 7 6 5. Bác nào giải thích hộ em tí
    Cậu in thêm 1 hàng nữa : printf("%d",i); //sẽ cho kết quả là 8.
    ==>Đối với các toán tử i++ các giá trị của i sẽ được truyền vào hàm trước sau đó mới thực hiện phép tăng 1 đơn vị
    Code:
    #include<stdio.h>
    void main()
    {
       int i=5;
       printf("%d %d %d",i++,i++,i++);
       printf(" %d",i);
    }
    Vậy còn các toán tử ++i thì sao ? câu trả lời sau khi được test là i tăng từ trái sang phải mỗi lần tăng lên thì giá trị sẽ được truyền vào hàm.
    Code:
    #include<stdio.h>
    void main()
    {
       int i=5;
       printf("%d %d %d",++i,++i,++i);
    }
    Kết quả ta được là : 8,7,6
    Cái này shin cũng mới để ý thấy lần đầu nhưng đó cũng là một điều thú vị. Cách tốt nhất khi gặp trường hợp tương tự như thế này là đừng hỏi tại sao ? Trước tiên là phải Xem nó hoạt động như thể nào cái đã. Để thích ứng trước rồi mới tìm hiểu nguyên nhân sau. (Bạn nào biết nguyên nhân thì post lên nha )

    OoShinHaoO

  8. #8
    Ngày gia nhập
    10 2006
    Nơi ở
    Hà Nội
    Bài viết
    146

    Uh ! Đúng là vậy.

  9. #9
    No Avatar
    tfx Khách

    Tìm không được nguyên nhân VC6 ra 5 5 5 mới hỏi tại sao chứ :P

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

    Lạ thật pete test Dev-C++ , VC++ 2k5
    Code:
    int main(void)
    {
        int i=5;
        printf("%d %d %d",++i,++i,++i);
        return 0;
    }
    Kết quả : 5 6 7 :::>>
    VC6 >> Download bản vá lỗi nhé ^^
    None!

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