Trang 1 trên tổng số 3 123 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 27 kết quả

Đề tài: Sự ưu tiên các toán tử trong lập trình C?

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

    Wink Sự ưu tiên các toán tử trong lập trình C?

    Mọi người có thể nói rõ mức độ ưu tiên của các phép toán tử đc hok. Vd như code này:
    Code:
    #include <conio.h>
    #include <stdio.h>
    
    int main()
    {
        int a = 1, b = 1;
        a = a++ + 3*++a + 2*a-- + b++;
        getch();
    }
    Cảm ơn trc

  2. #2
    Ngày gia nhập
    03 2009
    Nơi ở
    Ở địa ngục
    Bài viết
    667

    Kể ra thì bao giờ cho hết hả bạn. Tốt nhất là bạn tìm quyển sách hay ebook nào đó đọc đi. Mình thấy sách của Phạm Văn Ất được đó.

  3. #3
    Ngày gia nhập
    08 2008
    Nơi ở
    ha noi
    Bài viết
    79

    đây nhé tuần tự phép ưu tiên của phép toán trên sẽ là (* + -- ++) .
    Nếu áp dụng tuận tự thứ tự trên ta sẽ được như sau:
    Code:
     a = a++ + 3*++a + 2*a-- + b++;
    Trước tiên nó sẽ thực hiện phép nhân đầu tiên
    <=>
    Code:
    a=a++ + 3*2 + 2*2 + b++
    tiếp đến nó sẽ thực hiện phép cộng lúc này giá trị của a đã bị thay đổi = 2
    ==>
    Code:
    a= 2 + 6 + 4 +1
    kết quả cuối sẽ là 13

  4. #4
    Ngày gia nhập
    04 2009
    Bài viết
    68

    sao kết quả lại ra 14 :(

  5. #5
    Ngày gia nhập
    08 2008
    Nơi ở
    ha noi
    Bài viết
    79

    14 thì chẳng đúng à bạn dùng biến a làm biến để tính rồi lại lấy biến a là biến để tính tổng => 13+1 ko bằng 14 thì là mấy chứ bạn. Bạn thử dùng 1 biến khác gán nó bằng 0 xem KQ ra là mấy là biết ngay mà

  6. #6
    Ngày gia nhập
    04 2009
    Bài viết
    68

    Mặc định Sự ưu tiên các toán tử trong lập trình C?

    a=a++ + 3*2 + 2*2 + b++
    Mình hiểu rồi nó ưu tiên phép * + rồi mới thực hiện phép gán cho a
    nếu như
    c = a++ --a + ++a + b++
    thì sẽ ưu tiên cái nào trc hả bạn
    Đã được chỉnh sửa lần cuối bởi xiu_coi : 10-04-2009 lúc 06:46 PM.

  7. #7
    Ngày gia nhập
    08 2008
    Nơi ở
    ha noi
    Bài viết
    79

    độ ưu tiên sẽ là : + -- ++

  8. #8
    Ngày gia nhập
    04 2009
    Bài viết
    68

    Bạn có thể phân tích như bài trên đc hok
    Theo mình hiểu là
    Code:
    a = 1 + --a + ++a + b++
    sau phép tính a sẽ = 2
    Code:
    a = 1 + 1 + ++a + b++
    sau phép tính a = 1
    Code:
    a = 1 + 1 + 2 + b++
    ~>
    Code:
     a = 1 + 1 + 2 + 1
    kết quả sẽ là a = 5 :( mà kết quả thế thì sai rùi
    Thực sự phức tạp quá
    Đã được chỉnh sửa lần cuối bởi xiu_coi : 10-04-2009 lúc 07:44 PM.

  9. #9
    Ngày gia nhập
    07 2007
    Nơi ở
    TP.HCM
    Bài viết
    199

    Mình nghĩ bạn không nên viết code như vậy, sẽ làm khó hiểu và nhặp nhằng, tùy trình biên dịch sẽ cho ra kết quả khác nhau.

  10. #10
    Ngày gia nhập
    04 2009
    Bài viết
    68

    Hix thật sự mình hok thể nắm đc sự ưu tiên của cái phép ++ và --;
    mình còn hok hiểu sự khác nhau giữa --a, a-- và ++a, a-- trong tính toán nữa. Ai giúp mình với đc hok

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

  1. Lập trình C In k số nguyên tố đầu tiên có tổng các chữ số là chắn trong mảng, lỗi chỉ kiểm tra được với số đầu tiên?
    Gửi bởi ncn1992vn trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 5
    Bài viết cuối: 23-11-2012, 10:20 PM
  2. giá trị đầu tiên trong đoạn t,d của mảng
    Gửi bởi cttd trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 18
    Bài viết cuối: 13-04-2011, 07:24 PM
  3. Code tìm kiếm trong cây nhị phân trong C++. Lỗi chỉ tìm được từ đầu tiên trong file thôi sửa thế nào?
    Gửi bởi elvish trong diễn đàn Thảo luận, góp ý code C/C++ của bạn
    Trả lời: 1
    Bài viết cuối: 11-04-2010, 09:43 PM
  4. chương trìng đầu tiên trong C#?
    Gửi bởi longtom trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 11
    Bài viết cuối: 03-03-2010, 07:25 AM
  5. Lập trình C tìm số dương đầu tiên trong dãy số thực
    Gửi bởi chip_pro trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 11
    Bài viết cuối: 21-05-2008, 08:36 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