ลำดับความสำคัญของตัวดำเนินการจะกำหนดการจัดกลุ่มของคำในนิพจน์และตัดสินใจว่าจะประเมินนิพจน์อย่างไร ตัวดำเนินการบางตัวมีลำดับความสำคัญสูงกว่าตัวดำเนินการอื่น ตัวอย่างเช่น ตัวดำเนินการคูณมีลำดับความสำคัญสูงกว่าตัวดำเนินการบวก
ตัวอย่างเช่น x =7 + 3 * 2; ในที่นี้ x ถูกกำหนดเป็น 13 ไม่ใช่ 20 เนื่องจากตัวดำเนินการ * มีลำดับความสำคัญสูงกว่า + ดังนั้นก่อนอื่นจะถูกคูณด้วย 3*2 แล้วบวกเข้ากับ 7
ในที่นี้ ตัวดำเนินการที่มีลำดับความสำคัญสูงสุดจะปรากฏที่ด้านบนสุดของตาราง ตัวดำเนินการที่มีค่าต่ำสุดจะปรากฏที่ด้านล่าง ภายในนิพจน์ ตัวดำเนินการที่มีลำดับความสำคัญสูงกว่าจะได้รับการประเมินก่อน
หมวดหมู่ | ตัวดำเนินการ | การเชื่อมโยง |
---|---|---|
แก้ไขภายหลัง | () [] -> ++ - - | ซ้ายไปขวา |
Unary | + - ! ~ ++ - - (ชนิด)* &ขนาดของ | ขวาไปซ้าย |
ตัวคูณ | * / % | ซ้ายไปขวา |
สารเติมแต่ง | + - | ซ้ายไปขวา |
เปลี่ยน | <<<>> | ซ้ายไปขวา |
สัมพันธ์ | <<=>>= | ซ้ายไปขวา |
ความเท่าเทียมกัน | ==!= | ซ้ายไปขวา |
ระดับบิตและ | & | ซ้ายไปขวา |
XOR ระดับบิต | ^ | ซ้ายไปขวา |
ระดับบิตหรือ | | | ซ้ายไปขวา |
ตรรกะ และ | && | ซ้ายไปขวา |
ตรรกะ OR | || | ซ้ายไปขวา |
มีเงื่อนไข | ?: | ขวาไปซ้าย |
การมอบหมาย | =+=-=*=/=%=>>=<<=&=^=|= | ขวาไปซ้าย |
จุลภาค | , | ซ้ายไปขวา |
โค้ดตัวอย่าง
#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; }
ผลลัพธ์
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