Announcement

Collapse
No announcement yet.

Sự khác nhau về kết quả khi biên dịch trên các trình biên dịch khác nhau

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Sự khác nhau về kết quả khi biên dịch trên các trình biên dịch khác nhau

    Tranh thủ topic này, mình cũng xin thỉnh giáo các bạn về 10 câu sau, đây là những câu khá là kinh điển trong C và lớp mình cũng đang "tranh đấu" vì kết quả dự đoán không như mong đợi:
    Câu 1:
    PHP Code:
    int i 10;
    = +++ ++i;
    printf("%d"i); 

    Câu 2:
    PHP Code:
    int i 10;
    i++ + i++;
    printf("%d"i); 
    Câu 3:
    PHP Code:
    int i 10;
    = ++i++;
    printf("%d"i); 
    Câu 4:
    PHP Code:
    int i 10;
    i++ + ++i;
    printf("%d"i); 
    Câu 5:

    PHP Code:
    int i 10;
    i++ + --i;
    printf("%d"i); 
    Câu 6:
    PHP Code:
    int i 10;
    i-- + ++i;
    printf("%d"i); 
    Câu 7:
    PHP Code:
    int i 10;
    i-- + --i;
    printf("%d"i); 
    Câu 8:
    PHP Code:
    int i 10;
    = --+ --i;
    printf("%d"i); 
    Câu 9:
    PHP Code:
    int i 10;
    i-- + i--;
    printf("%d"i); 
    Câu 10:
    PHP Code:
    int i 10;
    = --i--;
    printf("%d"i); 

    Các bạn cho biết kết quả của 10 câu trên xem (không compile để xem kết quả, tự làm nha).

    Hy vọng là sẽ không xảy ra sự nghi ngờ đối với kết quả thực thi của các compiler.
    Last edited by 11520537; 25-12-2014, 14:36.
    Tôi không hối tiếc những gì mình đã làm. Tôi chỉ hối tiếc những gì đã không làm khi có cơ hội!

  • #2
    Originally posted by 11520537 View Post
    Tranh thủ topic này, mình cũng xin thỉnh giáo các bạn về 10 câu sau, đây là những câu khá là kinh điển trong C và lớp mình cũng đang "tranh đấu" vì kết quả dự đoán không như mong đợi:
    Câu 1:
    PHP Code:
    int i 10;
    = +++ ++i;
    printf("%d"i); 

    Câu 2:
    PHP Code:
    int i 10;
    i++ + i++;
    printf("%d"i); 
    Câu 3:
    PHP Code:
    int i 10;
    = ++i++;
    printf("%d"i); 
    Câu 4:
    PHP Code:
    int i 10;
    i++ + ++i;
    printf("%d"i); 
    Câu 5:

    PHP Code:
    int i 10;
    i++ + --i;
    printf("%d"i); 
    Câu 6:
    PHP Code:
    int i 10;
    i-- + ++i;
    printf("%d"i); 
    Câu 7:
    PHP Code:
    int i 10;
    i-- + --i;
    printf("%d"i); 
    Câu 8:
    PHP Code:
    int i 10;
    = --+ --i;
    printf("%d"i); 
    Câu 9:
    PHP Code:
    int i 10;
    i-- + i--;
    printf("%d"i); 
    Câu 10:
    PHP Code:
    int i 10;
    = --i--;
    printf("%d"i); 

    Các bô bạn cho biết kết quả của 10 câu trên xem (không compile để xem kết quả, tự làm nha).

    Hy vọng là sẽ không sảy ra sự nghi ngờ đối với kết quả thực thi của các compiler.
    Các bạn nên tự mình làm, sau đó compile để xem kết quả, rồi trở lại đây thảo luận về kết quả của mình và của compiler.
    Last edited by toannv; 25-12-2014, 13:49.
    Tôi không hối tiếc những gì mình đã làm. Tôi chỉ hối tiếc những gì đã không làm khi có cơ hội!

    Comment


    • #3
      Originally posted by 11520537 View Post
      Tranh thủ topic này, mình cũng xin thỉnh giáo các bạn về 10 câu sau, đây là những câu khá là kinh điển trong C và lớp mình cũng đang "tranh đấu" vì kết quả dự đoán không như mong đợi:
      Câu 1:
      PHP Code:
      int i 10;
      = +++ ++i;
      printf("%d"i); 

      Câu 2:
      PHP Code:
      int i 10;
      i++ + i++;
      printf("%d"i); 
      Câu 3:
      PHP Code:
      int i 10;
      = ++i++;
      printf("%d"i); 
      Câu 4:
      PHP Code:
      int i 10;
      i++ + ++i;
      printf("%d"i); 
      Câu 5:

      PHP Code:
      int i 10;
      i++ + --i;
      printf("%d"i); 
      Câu 6:
      PHP Code:
      int i 10;
      i-- + ++i;
      printf("%d"i); 
      Câu 7:
      PHP Code:
      int i 10;
      i-- + --i;
      printf("%d"i); 
      Câu 8:
      PHP Code:
      int i 10;
      = --+ --i;
      printf("%d"i); 
      Câu 9:
      PHP Code:
      int i 10;
      i-- + i--;
      printf("%d"i); 
      Câu 10:
      PHP Code:
      int i 10;
      = --i--;
      printf("%d"i); 

      Các bô bạn cho biết kết quả của 10 câu trên xem (không compile để xem kết quả, tự làm nha).

      Hy vọng là sẽ không sảy ra sự nghi ngờ đối với kết quả thực thi của các compiler.
      Sử dụng phép gán lên biến i với một biểu thức có thể thay đổi giá trị của i là undefined behavior theo chuẩn C. Mỗi trình biên dịch có thể tự đưa ra kết quả khác nhau nên việc cố luận cho ra kết quả của các câu trên không có lợi ích mấy. Mấy câu này "kinh điển" theo nghĩa là đưa ra để nhắc sinh viên đừng bao giờ code như thế thì hợp hơn em ơi.
      Last edited by toannv; 25-12-2014, 13:50.

      Comment


      • #4
        Originally posted by truonganpn View Post
        Sử dụng phép gán lên biến i với một biểu thức có thể thay đổi giá trị của i là undefined behavior theo chuẩn C. Mỗi trình biên dịch có thể tự đưa ra kết quả khác nhau nên việc cố luận cho ra kết quả của các câu trên không có lợi ích mấy. Mấy câu này "kinh điển" theo nghĩa là đưa ra để nhắc sinh viên đừng bao giờ code như thế thì hợp hơn em ơi.
        Thế mà bọn em phải làm bài test với những câu như thế này đấy thầy.
        Tôi không hối tiếc những gì mình đã làm. Tôi chỉ hối tiếc những gì đã không làm khi có cơ hội!

        Comment


        • #5
          Câu trả lời của mình là
          Câu 1:
          24

          Câu 2:
          22

          Câu 3:
          23

          Câu 4:
          23

          Câu 5:
          19

          Câu 6:
          21

          Câu 7:
          17

          Câu 8:
          16

          Câu 9:
          18

          Câu 10:
          17

          Comment


          • #6
            Sẽ không có câu trả lởi chính xác cụ thể nào.
            When we are young, work to learn, NOT to earn.
            E: ninhho At outlook dot com
            M: +8490 3000 670

            Comment


            • #7
              Originally posted by 11520537 View Post
              Thế mà bọn em phải làm bài test với những câu như thế này đấy thầy.
              Thông thường, thì BTC hay GV sẽ thông tin về compiler (trình biên dịch) nào được sử dụng. Do đó không thể xảy ra sự cố như thế này.

              Comment


              • #8
                Originally posted by 11520537 View Post
                Thế mà bọn em phải làm bài test với những câu như thế này đấy thầy.
                Trong trường học thì mấy câu này hay xuất hiện trong test như những câu hỏi mẹo nhiều khi không có tính điểm. Không biết là em làm test gì như tui nghĩ chắc chắn những câu này chỉ chiếm một phần rất nhỏ của test đó mà thôi. Còn nếu dùng để test thật sự thì chỉ dùng trong các trường hợp kiểm tra về một trình biên dịch cụ thể. Thế nên đối với môn nhập môn lập trinh, mấy năm gần đây thì các thầy cô trong trường cũng chẳng mặn mà chi những câu đánh đố như thế này nữa. Nó giống với dạng bài toán "đầu cừu đuôi thuyền trưởng" từng tốn giấy mực của báo giới trong năm nay thôi.

                Comment

                LHQC

                Collapse
                Working...
                X