Các quy tắc ưu tiên và associativity xác về ý nghĩa, nhưng họ không xác định thứ tự mà subexpressions trong một biểu thức lớn hơn hoặc nhà nước-ment được đánh giá tại thời gian chạy. Trình tự đánh giá được thảo luận trong mục 7.12.
Ví dụ
Dưới đây là một số ví dụ về các quy tắc ưu tiên và associativity:
biểu gốc Equivalent Lý do biểu hiện cho tương đương
một * b + e (a * b) + c * có độ ưu tiên cao hơn +
a + = b | »o a + = (b | = c) + = và | = là phải kết hợp
một-b + c (ab) + c - và + là trái kết hợp
sizeof tint) * p (sizeof (int)) * p sfzeof có ưu tiên cao
hơn so với dàn diễn viên
, * p-> q * (p-> q) -> có độ ưu tiên cao hơn *
Để tóm tắt các quy tắc associativity, các nhà điều hành nhị phân được trái kết trừ các toán tử gán, mà là Tight-associative- như là các nhà điều hành có điều kiện. Các nhà khai thác nguyên phân và postfix đôi khi được mô tả như là phải kết hợp, nhưng điều này là cần thiết chỉ để thể hiện ý tưởng rằng một biểu thức như * x ++ được hiểu là * (x ++) hơn là (* x) ++. Chúng tôi thích đơn giản chỉ để nói rằng các nhà khai thác postfix có độ ưu tiên cao hơn (prefix) khai thác nguyên phân.
Tài liệu tham khảo các nhà khai thác chuyển nhượng 7,9; toán tử nhị phân 7,6; nối của chuỗi 2.7.4; Toán tử điều kiện 7,8; postfix điều hành 7.4.4; unary + 7.5.3
7.2.2 Overflow và ngoại lệ số học khác
Đối với một số hoạt động trong C, như phép cộng và phép nhân, nó có thể là sự thật kết quả toán học của các hoạt động không thể được biểu diễn như là một giá trị của các loại dự kiến re¬sult (được xác định bởi các quy tắc chuyển đổi thông thường). Tình trạng này được gọi là tràn hoặc, trong một số trường hợp, Van cân bằng.
Nói chung, ngôn ngữ C không chỉ rõ những hậu quả của tràn. Một pos-trách là một giá trị không chính xác (đúng loại) được sản xuất. Một khả năng khác là thực hiện chương trình được chấm dứt. Khả năng thứ ba là một số loại bẫy phụ thuộc vào máy hoặc ngoại lệ xảy ra mà có thể được phát hiện bởi các chương trình trong một số cách thức phụ thuộc implementation-.
Đối với một số hoạt động, ngôn ngữ C một cách rõ ràng quy định rằng các tác động là un-dự đoán được cho các giá trị toán hạng nào đó hoặc (chặt chẽ hơn) mà một giá trị luôn luôn được sản xuất, nhưng giá trị là không thể đoán trước cho các giá trị toán hạng nhất định. Nếu toán hạng bên phải của các nhà điều hành phân chia, /, hay các nhà điều hành còn lại,%, bằng không, thì các tác động là không thể đoán trước. Nếu toán hạng bên phải của một nhà điều hành thay đổi, hoặc << >>, là quá lớn hay tiêu cực, sau đó là một giá trị un¬predictable được sản xuất.
đang được dịch, vui lòng đợi..