Announcement

Collapse
No announcement yet.

con trỏ trong C

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

  • #46
    Originally posted by 10520397 View Post
    hey zj chỉ có cách này của mình là đúng thoi.
    nếu a+b vượt quá giá trị của biến kiểu int thì sao nhỉ?

    Comment


    • #47
      Originally posted by 11520327 View Post
      nếu a+b vượt quá giá trị của biến kiểu int thì sao nhỉ?
      return theo kiểu ói giá trị =]]
      Be different and always different
      http://archlinuxvn.org/
      http://theslinux.org
      http://lab.infosec.xyz

      Comment


      • #48
        Originally posted by 10520058 View Post
        return theo kiểu ói giá trị =]]
        anh viết tiếng gì thế, đọc chẳng hiểu?

        Comment


        • #49
          Originally posted by 09520019 View Post
          đúng rồi, nhưng để đơn giản hơn thì ta có thể tưởng tượng đoạn code biến thành thế này

          Code:
          void swap(int &a,int &a)
          {
              a = a + a;
              a = a - a;
              a = a - a;
          }
          void swap(int &a,int &a)
          {
              a = a - a;
              a = a + a;
              a = a - a;
          }
          void swap(int &a,int &a)
          {
              a = a ^ a;
              a = a ^ a;
              a = a ^ a;
          }
          và ta thấy ngay là sai nghiêm trọng
          đề bài là đổi giá trị 2 biến mà anh. trong trường hợp này nếu cả 2 tham số cho hàm là 1 biến thì không hợp lí. tuy nhiên, trường hợp a đưa ra thì e chưa ngờ tới :happy:

          Comment


          • #50
            Originally posted by 11520327 View Post
            anh viết tiếng gì thế, đọc chẳng hiểu?
            học mảng chưa a[-1] bằng cái gì trong mảng đó :-w. Tiếng đó là tiếng Việt, xin lỗi anh dốt tiếng Anh nên giữ nguyên văn phong return vì không biết dịch thế nào cho đúng, còn từ ói thì tự hiểu.
            Be different and always different
            http://archlinuxvn.org/
            http://theslinux.org
            http://lab.infosec.xyz

            Comment


            • #51
              Originally posted by 10520058 View Post
              học mảng chưa a[-1] bằng cái gì trong mảng đó :-w. Tiếng đó là tiếng Việt, xin lỗi anh dốt tiếng Anh nên giữ nguyên văn phong return vì không biết dịch thế nào cho đúng, còn từ ói thì tự hiểu.
              nói thật bây giờ e chẳng hiểu a đang nói gì! a nói rõ hơn được không? chúng ta đưa ra ý kiến cùng thảo luận thì a nên viết 1 cách rõ ràng dễ hiểu!

              Comment


              • #52
                Originally posted by 11520327 View Post
                nếu a+b vượt quá giá trị của biến kiểu int thì sao nhỉ?
                đơn giản mà bạn. học năm 2 rồi mà sợ a+b vượt quá kiểu int.
                Lê Bá Nhựt UIT-CE05
                Phone: 0968-868-300
                Email: nhutlbuit@gmail.com

                Enthuse + Creative + Try => Success

                Comment


                • #53
                  Originally posted by 10520397 View Post
                  đơn giản mà bạn. học năm 2 rồi mà sợ a+b vượt quá kiểu int.
                  ý của a là sao?

                  Comment


                  • #54
                    Originally posted by 11520327 View Post
                    nói thật bây giờ e chẳng hiểu a đang nói gì! a nói rõ hơn được không? chúng ta đưa ra ý kiến cùng thảo luận thì a nên viết 1 cách rõ ràng dễ hiểu!
                    thái độ thì khỏi nói nữa :]]
                    Be different and always different
                    http://archlinuxvn.org/
                    http://theslinux.org
                    http://lab.infosec.xyz

                    Comment


                    • #55
                      Originally posted by 10520058 View Post
                      thái độ thì khỏi nói nữa :]]
                      thái độ của e như thế nào? a không hài lòng thì a nói ra cho e biết, e sai ở đâu, chỗ nào chưa được, nếu đúng, e sẽ cảm ơn a và sẵn sàng sửa lại. còn a?, e đưa ra 1 câu hỏi mà đến giờ vẫn chưa có câu trả lời rõ ràng, a nghĩ sao khi 1 e k7 đọc những câu trả lời của a?. ở đây là 1 cộng đồng, a nên nhớ như vậy. a nhìn cách của a Nguyễn Đăng Châu thảo luận các vấn đề đi, trình bày rất rõ ràng. ở đây e không có ý so sánh, e nói ra đây để ít nhất a biết suy nghĩ của e!
                      Last edited by 11520327; 14-10-2012, 17:25.

                      Comment


                      • #56
                        Originally posted by 10520058 View Post
                        thái độ thì khỏi nói nữa :]]
                        Trong một topic nghiêm túc, khi một người lịch sự đề nghị giải thích rõ ràng thì đó không phải là lúc nói những câu cà tưng cà rỡn.

                        Comment


                        • #57
                          Originally posted by 11520327 View Post
                          nếu a+b vượt quá giá trị của biến kiểu int thì sao nhỉ?
                          Nếu a + b vượt quá giá trị kiểu int thì cũng không sao cả đâu bạn. Vì quy tắc tràn số trong C là theo vòng, chẳng hạn: a = INT_MAX; /*2147483647 (Windows)*/, thì khi printf("%d", a + 1); sẽ cho ra kết quả là: -2147483648 /*-2147483647 - 1*/. Đối với phép trừ thì quy tắc tràn số cũng như phép cộng.
                          Dễ dàng thấy là kết quả của đoạn chương trình {a = a + b; b = a - b; a = a - b;} cho dù giá trị của a + b > INT_MAX sẽ không sai.
                          Bạn có thể xem thêm link này http://diendan.congdongcviet.com/sho...?t=3765&page=2.
                          Thân chào,

                          Comment


                          • #58
                            Originally posted by 08520021 View Post
                            Nếu a + b vượt quá giá trị kiểu int thì cũng không sao cả đâu bạn. Vì quy tắc tràn số trong C là theo vòng, chẳng hạn: a = INT_MAX; /*2147483647 (Windows)*/, thì khi printf("%d", a + 1); sẽ cho ra kết quả là: -2147483648 /*-2147483647 - 1*/. Đối với phép trừ thì quy tắc tràn số cũng như phép cộng.
                            Dễ dàng thấy là kết quả của đoạn chương trình {a = a + b; b = a - b; a = a - b;} cho dù giá trị của a + b > INT_MAX sẽ không sai.
                            Bạn có thể xem thêm link này http://diendan.congdongcviet.com/sho...?t=3765&page=2.
                            Thân chào,
                            PHP Code:
                            #include<stdio.h>
                             
                              
                            int main()
                               {
                                  
                            int a 2147483640,b=21474;
                                  
                            printf("%d"a+b);
                              return 
                            0;
                              } 
                            vẫn tràn nha anh :-). Em build trên Gcc 4.7.2
                            Be different and always different
                            http://archlinuxvn.org/
                            http://theslinux.org
                            http://lab.infosec.xyz

                            Comment


                            • #59
                              Originally posted by 10520058 View Post
                              vẫn tràn nha anh :-). Em build trên Gcc 4.7.2
                              Chắc do mình nói không rõ nên bạn hiểu sai ý chăng? :-S
                              Ý mình là nó vẫn sẽ tràn nhưng có quy tắc và theo cái quy tắc đó thì đoạn chương trình này sẽ vẫn cho ra kết quả (cuối cùng) là chính xác.
                              Code:
                              #include <stdio.h>
                              
                              void swap(int *a, int *b)
                              {
                                  *a = *a + *b;
                                  *b = *a - *b;
                                  *a = *a - *b;
                              }
                              
                              int main()
                              {
                                  int a = 2147483640, b = 21474;
                                  printf("Before: a = %d, b = %d", a, b);
                                  swap(&a, &b);
                                  printf("\nAfter: a = %d, b = %d", a, b);
                                  return 0;
                              }

                              Comment


                              • #60
                                Originally posted by 08520021 View Post
                                Chắc do mình nói không rõ nên bạn hiểu sai ý chăng? :-S
                                Ý mình là nó vẫn sẽ tràn nhưng có quy tắc và theo cái quy tắc đó thì đoạn chương trình này sẽ vẫn cho ra kết quả (cuối cùng) là chính xác.
                                Code:
                                #include <stdio.h>
                                
                                void swap(int *a, int *b)
                                {
                                    *a = *a + *b;
                                    *b = *a - *b;
                                    *a = *a - *b;
                                }
                                
                                int main()
                                {
                                    int a = 2147483640, b = 21474;
                                    printf("Before: a = %d, b = %d", a, b);
                                    swap(&a, &b);
                                    printf("\nAfter: a = %d, b = %d", a, b);
                                    return 0;
                                }
                                Đây là một phép tính thừa không cần thiết vì:
                                lưu tổng của 2 số vào 1 và sau đó trừ cái kia ra và ngược lại luôn đúng với bất kì tập số a,b nào thuộc R (không phụ thuộc tràn số) nhưng sinh ra ba phép tình và 3 phép gán :-) Nên tránh.
                                Be different and always different
                                http://archlinuxvn.org/
                                http://theslinux.org
                                http://lab.infosec.xyz

                                Comment

                                LHQC

                                Collapse
                                Working...
                                X