Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ลำดับความสำคัญของตัวดำเนินการและการเชื่อมโยงใน C


ลำดับความสำคัญของตัวดำเนินการจะกำหนดการจัดกลุ่มของคำในนิพจน์และตัดสินใจว่าจะประเมินนิพจน์อย่างไร ตัวดำเนินการบางตัวมีลำดับความสำคัญสูงกว่าตัวดำเนินการอื่น ตัวอย่างเช่น ตัวดำเนินการคูณมีลำดับความสำคัญสูงกว่าตัวดำเนินการบวก

ตัวอย่างเช่น 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