Thứ tự ưu tiên các phép toán

Một phần của tài liệu Đề cương bài giảng cơ sở kỹ thuật lập trình ngôn ngữ c (Trang 31 - 33)

Trình biên dịch phải xác ựịnh thứ tự thực hiện các toán tử trong trường hợp một biểu thức có nhiều phép toán, giả sử, có biểu thức sau:

var1 = 5+7*3;

Biểu thức trên có ba phép toán ựể thực hiện bao gồm (=, +,*). Ta thử xét các phép toán theo thứ tự từ trái sang phải, ựầu tiên là gán giá trị 5 cho biến var1, sau ựó cộng 7 vào 5 là 12 cuối cùng là nhân với 3, kết quả trả về là 36, ựiều này thật sự có vấn ựề, không ựúng với mục ựắch yêu cầu của chúng tạ Do vậy việc xây dựng một trình tự xử lý các toán tử là hết sức cần thiết.

Các luật về ựộ ưu tiên xử lý sẽ bảo trình biên dịch biết ựược toán tử nào ựược thực hiện trước trong biểu thức.Tương tự như trong phép toán ựại số thì phép nhân có ựộ ưu tiên thực hiện trước phép toán cộng, do vậy 5+7*3 cho kết quả là 26 ựúng hơn kết quả 36. Và cả hai phép toán cộng và phép toán nhân ựiều có ựộ ưu tiên cao hơn phép gán. Như vậy trình biên dịch sẽ thực hiện các phép toán rồi sau ựó thực hiện phép gán ở bước cuối cùng. Kết quả ựúng của câu lệnh trên là biến var1 sẽ nhận giá trị là 26.

Trong ngôn ngữ C#, dấu ngoặc ựược sử dụng ựể thay ựổi thứ tự xử lý, ựiều này cũng giống trong tắnh toán ựại số. Khi ựó muốn kết quả 36 cho biến var1 có thể viết:

var1 = (5+7) * 3;

Biểu thức trong ngoặc sẽ ựược xử lý trước và sau khi có kết quả là 12 thì phép nhân ựược thực hiện.

Các phép toán ựược liệt kê cùng loại sẽ có thứ tự theo mục thứ thự của bảng: thứ tự trái tức là ựộ ưu tiên của các phép toán từ bên trái sang, thứ tự phải thì các phép toán có ựộ ưu tiên từ bên phải qua tráị Các toán tử khác loại thì có ựộ ưu tiên từ trên xuống dưới, do vậy các toán tử loại cơ bản sẽ có ựộ ưu tiên cao nhất và phép toán gán sẽ có ựộ ưu tiên thấp nhất trong các toán tử.

Một phần của tài liệu Đề cương bài giảng cơ sở kỹ thuật lập trình ngôn ngữ c (Trang 31 - 33)

Tải bản đầy đủ (PDF)

(135 trang)