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

Đề tài: kết quả hiển thị lạ thật

  1. #1
    Ngày gia nhập
    07 2009
    Bài viết
    42

    Wink kết quả hiển thị lạ thật

    void main()
    {
    int i=0;
    printf ("%d%d",i,i++);

    getch();
    }
    //kết quả là 10 em không hiểu,Anh Chị giúp giùm em với

  2. #2
    Ngày gia nhập
    08 2011
    Nơi ở
    /pentest
    Bài viết
    44

    Trích dẫn Nguyên bản được gửi bởi huhuhuhu Xem bài viết
    C Code:
    1. void main()
    2. {
    3.     int i=0;
    4.     printf ("%d%d",i,i++);
    5.  
    6.     getch();
    7. }
    //kết quả là 10 em không hiểu,Anh Chị giúp giùm em với
    Chỉ khuyên bạn là dùng ++ thì phải hết sức cẩn thận đây là một trường hợp mà trình biên dịch không biết phải tăng i lên trước hay in kết quả ra trước, có thể nói là trình biên dịch không có định nghĩa sẵn (undefined) để xử lý hành động này. nếu cứ bàn luận sẽ gây tranh cãi mà ko giải quyết được vấn đề gì.

  3. #3
    Ngày gia nhập
    12 2010
    Nơi ở
    Cần thơ
    Bài viết
    273

    Trích dẫn Nguyên bản được gửi bởi huhuhuhu Xem bài viết
    void main()
    {
    int i=0;
    printf ("%d%d",i,i++);

    getch();
    }
    //kết quả là 10 em không hiểu,Anh Chị giúp giùm em với
    10 đâu mà mười đó là 1 và 0
    ~~
    nguyên tắc dấu ++ là từ phải qua trái trong hàm printf
    Ai bất tài, tôi nhìn hoài chẳng thấy,
    Đi khắp phòng tôi lấy 1 tấm gương,
    Khẽ đặt lên một góc phía bức tường,
    Nhìn vào đó, tôi tận tường kẻ đó.

  4. #4
    Ngày gia nhập
    08 2011
    Nơi ở
    /pentest
    Bài viết
    44

    @azurelonely: cái mong đợi là in ra 01 mà.

  5. #5
    Ngày gia nhập
    11 2010
    Nơi ở
    hell
    Bài viết
    165

    Trích dẫn Nguyên bản được gửi bởi meterpreter Xem bài viết
    @azurelonely: cái mong đợi là in ra 01 mà.
    uh đúng là jay.không pít có nhầm ko nhỉ

  6. #6
    Ngày gia nhập
    12 2010
    Nơi ở
    Cần thơ
    Bài viết
    273

    Mặc định kết quả hiển thị lạ thật

    Trích dẫn Nguyên bản được gửi bởi meterpreter Xem bài viết
    @azurelonely: cái mong đợi là in ra 01 mà.
    Trích dẫn Nguyên bản được gửi bởi treatmaster Xem bài viết
    uh đúng là jay.không pít có nhầm ko nhỉ
    Ai bất tài, tôi nhìn hoài chẳng thấy,
    Đi khắp phòng tôi lấy 1 tấm gương,
    Khẽ đặt lên một góc phía bức tường,
    Nhìn vào đó, tôi tận tường kẻ đó.

  7. #7
    Ngày gia nhập
    08 2011
    Nơi ở
    /pentest
    Bài viết
    44

    @all: chuơng trình trên mong muốn của người viết là muốn in ra 0 1 nhưng trình biên dịch lại in ra 1 0.

  8. #8
    Ngày gia nhập
    12 2010
    Nơi ở
    Cần thơ
    Bài viết
    273

    Trích dẫn Nguyên bản được gửi bởi meterpreter Xem bài viết
    @all: chuơng trình trên mong muốn của người viết là muốn in ra 0 1 nhưng trình biên dịch lại in ra 1 0.
    C Code:
    1. printf("%d %d",i,++i);
    Ai bất tài, tôi nhìn hoài chẳng thấy,
    Đi khắp phòng tôi lấy 1 tấm gương,
    Khẽ đặt lên một góc phía bức tường,
    Nhìn vào đó, tôi tận tường kẻ đó.

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

    Meter nói đúng rồi, vấn đề này không cần tranh luận vì câu lệnh trên là không hợp lệ (ill-formed) trong ngôn ngữ C/C++
    Và theo chuẩn C/C++, nó sẽ dẫn đến undefined behavior (hành vi không xác định). Đối với 1 trình biên dịch nhất định thì có thể không báo lỗi và hành vi của nó có thể là cố định, nhưng điều đó không quan trọng. Câu lệnh sai thì không cần bàn đến kết quả sẽ thế nào
    Search thêm về sequence points để biết rõ chi tiết

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

  1. Trả lời: 0
    Bài viết cuối: 03-08-2012, 10:47 AM
  2. Trả lời: 0
    Bài viết cuối: 22-06-2012, 09:08 PM
  3. Trả lời: 0
    Bài viết cuối: 15-05-2012, 02:30 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