Computer >> Máy Tính >  >> Lập trình >> C ++

Mức độ ưu tiên của nhà điều hành và tính liên kết trong C

Mức độ ưu tiên của toán tử xác định nhóm các thuật ngữ trong một biểu thức và quyết định cách một biểu thức được đánh giá. Một số toán tử nhất định có quyền ưu tiên cao hơn những toán tử khác; ví dụ:toán tử nhân có mức độ ưu tiên cao hơn toán tử cộng.

Ví dụ:x =7 + 3 * 2; ở đây, x được gán 13, không phải 20 vì toán tử * có mức độ ưu tiên cao hơn +, do đó, đầu tiên nó được nhân với 3 * 2 và sau đó cộng thành 7.

Ở đây, các toán tử có mức độ ưu tiên cao nhất xuất hiện ở đầu bảng, những toán tử có mức độ ưu tiên thấp nhất xuất hiện ở cuối bảng. Trong một biểu thức, các toán tử có mức độ ưu tiên cao hơn sẽ được đánh giá đầu tiên.

Danh mục Toán tử Tính liên kết
Postfix () [] ->. ++ - - Trái sang phải
Một lần + -! ~ ++ - - (type) * &sizeof Từ phải sang trái
Multiplicative * /% Trái sang phải
Phụ gia + - Trái sang phải
Shift <<>> Trái sang phải
Quan hệ <<=>> = Trái sang phải
Bình đẳng ==! = Trái sang phải
Bitwise VÀ & Trái sang phải
Bitwise XOR ^ Trái sang phải
Bitwise HOẶC | Trái sang phải
Lôgic VÀ && Trái sang phải
Logic HOẶC || Trái sang phải
Có điều kiện ?: Từ phải sang trái
Chuyển nhượng =+ =- =* =/ =% =>> =<<=&=^ =| = Từ phải sang trái
Dấu phẩy , Trái sang phải

Mã mẫu

#include <stdio.h>
main() {
   int a = 20;
   int b = 10;
   int c = 15;
   int d = 5;
   int e;
   e = (a + b) * c / d; // ( 30 * 15 ) / 5
   printf("Value of (a + b) * c / d is : %d\n", e );
   e = ((a + b) * c) / d; // (30 * 15 ) / 5
   printf("Value of ((a + b) * c) / d is : %d\n" , e );
   e = (a + b) * (c / d); // (30) * (15/5)
   printf("Value of (a + b) * (c / d) is : %d\n", e );
   e = a + (b * c) / d; // 20 + (150/5)
   printf("Value of a + (b * c) / d is : %d\n" , e );
   return 0;
}

Đầu ra

Value of (a + b) * c / d is : 90
Value of ((a + b) * c) / d is : 90
Value of (a + b) * (c / d) is : 90
Value of a + (b * c) / d is : 50