[Powered by Google Translate] Precendence là làm thế nào chúng ta trả lời câu hỏi, hoạt động những gì chúng ta nên làm gì đầu tiên?
Cho dù giải quyết các phương trình toán học hoặc các dòng phân tích cú pháp của mã máy tính,
có những quy định nghiêm ngặt ưu tiên mà chúng tôi tuân thủ
để tất cả các máy tính và mọi người có thể có được kết quả tương tự.
>> Trước hết, nguyên tắc quan trọng nhất để nhớ, đặc biệt là trong việc kiểm tra lỗi,
là chúng tôi luôn luôn làm việc từ dấu ngoặc đơn trong cùng ra ngoài.
Sử dụng ngoặc thêm có thể là một chiến thuật gỡ lỗi hữu ích,
nhưng nó không phải là tốt thực hành để xả rác mã của bạn với các dấu ngoặc không cần thiết.
Hãy dành thời gian để tìm hiểu quy tắc ưu tiên điều hành cơ bản.
>> Nguyên tắc chung thứ hai là khi các nhà khai thác có priorty bằng,
bạn chỉ đơn giản là giải quyết từ trái sang phải.
Khi giao dịch với toán học đơn giản, chúng tôi bắt đầu với dấu ngoặc đơn,
sau đó làm nhân và chia, và cuối cùng làm phép cộng và phép trừ.
Phép nhân và chia có ưu tiên giống nhau,
bởi vì họ là chủ yếu thực hiện các hoạt động tương tự.
Sau khi phân chia tất cả chỉ đơn giản là nhân nghịch đảo của một giá trị.
Tương tự như vậy, trừ chỉ đơn giản là thêm một giá trị âm.
>> Hãy làm một ví dụ.
Tiếp theo thứ tự ưu tiên, chúng tôi sẽ bắt đầu với các dấu ngoặc đơn. Nine trừ đi 1.
Điều đó sẽ cho chúng ta 8. Sau đó, chúng tôi có thể chuyển sang các bộ phận và nhân.
Chúng tôi sẽ giải quyết từ trái sang phải. Vì vậy, 10 chia cho 2 là 5.
Chúng tôi có 5 lần 8 ở đây, và sẽ cung cấp cho chúng tôi 40.
Sau đó, chúng tôi di chuyển thứ tự tiếp theo ưu tiên.
Vì vậy, chúng tôi đang trái với 3 và 40 trừ đi 1.
Một lần nữa chỉ giải quyết trái sang phải,
bởi vì có bằng ưu tiên giữa cộng và trừ.
Chúng ta có thể nói 3 và 40 là 43, trừ đi 1 là 42. Đó là câu trả lời của chúng tôi.
>> Có 2 loại của các nhà khai thác giảm đi và tăng;
Các hình thức tiền tố, và hình thức hậu tố.
Các hình thức hậu tố, i + +, thường được sử dụng cho các vòng,
điều đó có nghĩa rằng giá trị hiện tại được sử dụng trong biểu thức, và sau đó nó được tăng lên.
Vì vậy, giá trị sẽ khác nhau trong thời gian tới biến được sử dụng.
Mặt khác, việc tăng tiền tố hay giảm có nghĩa là giá trị hiện tại
được tăng lên hoặc giảm đi đầu tiên, và sau đó nó được sử dụng trong biểu thức.
>> Hãy lấy một ví dụ với các số nguyên x.
Chúng tôi sẽ thiết lập nó bằng 5.
Nếu chúng ta sử dụng toán tử hậu tố vào nó và nói x + +, x trên dòng này vẫn còn 5.
Nếu chúng tôi đã in nó ra, chúng ta sẽ nhận được giá trị 5.
Nhưng thực tế x1 về phía trước bằng 6.
Vì vậy, ngay tại đây trên dòng này x là bằng 6, và nếu chúng ta in nó ra, chúng tôi sẽ nhận được giá trị 6.
Bây giờ nếu chúng ta sử dụng các nhà điều hành tiền tố, + + x, x được tăng lên đầu tiên, và sau đó giá trị được sử dụng.
Vì vậy, nó bằng 7 trên dòng này.
Incrementing nhiên 6 7, và nếu chúng tôi đã in ra, chúng tôi sẽ nhận được giá trị 7.
>> Các sắc thái cuối cùng trong precendence rằng chúng tôi sẽ xem xét các chương trình khuyến mại bằng các ký hiệu con trỏ.
Các nhà điều hành dereference, ngôi sao, có ưu tiên hơn các nhà khai thác toán học cơ bản,
nhưng không quá incement hậu tố và các nhà khai thác giảm đi.
Điều này dẫn chúng ta đến ví dụ cuối cùng của chúng tôi.
Chúng ta hãy x số nguyên và thiết lập nó bằng 7.
Chúng tôi cũng sẽ làm cho một y con trỏ và thiết lập nó bằng địa chỉ của x.
Vì vậy, khi chúng tôi dereference y chúng ta nên có giá trị 7.
Bây giờ trong dòng mã này, chúng tôi có một tình huống hơi mơ hồ.
Chúng ta dereferencing y đầu tiên, và sau đó incrementing giá trị 7?
Hay là chúng ta incrementing các con trỏ và sau đó dereferencing nó?
Trong thực tế, bởi vì các nhà điều hành tăng hậu tố có ưu tiên hơn
các nhà điều hành dereference, chúng tôi đang cố gắng để tăng y con trỏ,
trong đó sẽ di chuyển con trỏ bằng cách kích thước byte int.
Về cơ bản cho chúng tôi một địa chỉ ở một số điểm hoàn toàn khác nhau trong bộ nhớ,
và sau đó chúng tôi đang dereferencing nó.
Vì vậy, đây là dòng rất vô nghĩa.
Nếu chúng ta thực sự muốn tăng giá trị của 7
chúng ta sẽ phải đặt các nhà điều hành dereference với y trong dấu ngoặc đơn.
Sau đó, chúng ta có thể tăng nó.
Vì vậy, trong khi chúng tôi sẽ không được incrementing giá trị x với thứ hai đến dòng cuối cùng của mã,
trong dòng cuối cùng của mã, chúng tôi sẽ infact dereference y
để có được giá trị x và thặng dư đó.
Chúng tôi sẽ để lại với giá trị x bằng 8.
>> Dưới đây là danh nhanh chóng trong các quy định precendence mà chúng tôi đã nói chuyện về.
Chúng tôi sẽ bắt đầu với dấu ngoặc đơn trong cùng và làm việc ra ngoài.
Sau đó, chúng tôi di chuyển cho các nhà khai thác hậu tố như i + + hoặc i.
Sau đó, tới đích và địa chỉ của các nhà khai thác như một ngôi sao x hoặc ký hiệu x,
và tiền tố nhà khai thác như + + i - i.
Cuối cùng, chúng tôi làm hoạt động toán học đơn giản như chia, nhân, modulo.
Sau đó, cộng, trừ.
Đó là precendence. Tôi là Jordan Jozwiak, và đây là CS50.
Chúng tôi sẽ tới đích và sử dụng địa chỉ và làm thế nào bạn có cụm từ đó?
Tôi đang thực hiện. Okay.