ตัวดำเนินการดำเนินการกับข้อมูล จำแนกได้ดังนี้ −
- ตัวดำเนินการเลขคณิต
- ตัวดำเนินการเชิงสัมพันธ์
- ตัวดำเนินการทางตรรกะ
- ตัวดำเนินการมอบหมาย
- ตัวดำเนินการเพิ่มและลดค่า
- ตัวดำเนินการระดับบิต
- ตัวดำเนินการแบบมีเงื่อนไข
- ตัวดำเนินการพิเศษ
ตัวดำเนินการเลขคณิต
ตัวดำเนินการเหล่านี้ใช้สำหรับการคำนวณเชิงตัวเลข (หรือ) เพื่อดำเนินการคำนวณ เช่น การบวก การลบ เป็นต้น
| ตัวดำเนินการ | คำอธิบาย | ตัวอย่าง | a=20,b=10 | เอาต์พุต |
|---|---|---|---|---|
| + | เพิ่มเติม | a+b | 20+10 | 30 |
| - | การลบ | a-b | 20-10 | 10 |
| * | การคูณ | a*b | 20*10 | 200 |
| / | ดิวิชั่น | a/b | 20/10 | 2(ผลหาร) |
| % | โมดูลาร์ดิวิชั่น | a%b | 20%10 | 0 (ที่เหลือ) |
โปรแกรม
ต่อไปนี้เป็นโปรแกรม C สำหรับตัวดำเนินการเลขคณิต -
#include<stdio.h>
main ( ){
int a= 20, b = 10;
printf (" %d", a+b);
printf (" %d", a-b);
printf (" %d", a*b);
printf (" %d", a/b);
printf (" %d", a%b);
} ผลลัพธ์
เมื่อโปรแกรมข้างต้นทำงาน มันจะให้ผลลัพธ์ดังต่อไปนี้ −
30 10 200 20
ตัวดำเนินการเชิงสัมพันธ์
ใช้สำหรับเปรียบเทียบสองนิพจน์
| ตัวดำเนินการ | คำอธิบาย | ตัวอย่าง | a=20,b=10 | เอาต์พุต |
|---|---|---|---|---|
| < | น้อยกว่า | ก | 10<20 | 1 |
| <= | น้อยกว่า (หรือ) เท่ากับ | ก<=b | 10<=20 | 1 |
| > | มากกว่า | a>b | 10>20 | 0 |
| >= | มากกว่า (หรือ) เท่ากับ | a>=b | 10>=20 | 0 |
| == | เท่ากับ | a==b | 10==20 | 0 |
| != | ไม่เท่ากับ | a!=b | 10!=20 | 1 |
ผลลัพธ์ของนิพจน์เชิงสัมพันธ์อาจเป็นจริง (1) (หรือ) เท็จ (0)
โปรแกรม
ต่อไปนี้เป็นโปรแกรม C สำหรับตัวดำเนินการเชิงสัมพันธ์ -
#include<stdio.h>
main ( ){
int a= 10, b = 20;
printf (" %d", a<b);
printf (" %d", a<=b);
printf (" %d", a>b);
printf (" %d", a>=b);
printf (" %d", a = =b);
printf (" %d", a ! =b);
} ผลลัพธ์
เมื่อโปรแกรมข้างต้นทำงาน มันจะให้ผลลัพธ์ดังต่อไปนี้ −
1 1 0 0 0 1 1 1
ตัวดำเนินการเชิงตรรกะ
สิ่งเหล่านี้ใช้เพื่อรวม 2 (หรือ) นิพจน์เพิ่มเติมอย่างมีเหตุผล
เป็นตรรกะและ (&&) ตรรกะ OR ( || ) และตรรกะไม่ (!)
| exp1 | exp2 | exp1&&exp2 |
|---|---|---|
| ท | ท | ท |
| ท | F | F |
| F | ท | F |
| F | F | F |
ตรรกะและ(&&)
| exp1 | exp2 | exp1||exp2 |
|---|---|---|
| ท | ท | ท |
| ท | F | ท |
| F | ท | ท |
| F | F | F |
ตรรกะ OR(||)
| exp | !exp |
|---|---|
| ท | F |
| F | ท |
ไม่ใช่ตรรกะ (!)
| ตัวดำเนินการ | คำอธิบาย | ตัวอย่าง | a=20,b=10 | ผลลัพธ์ |
|---|---|---|---|---|
| && | ตรรกะและ | (a>b)&&(a| (10>20)&&(10<30) | 0 | |
| || | ตรรกะหรือ | (a>b)||(a<=c) | (10>20)||(10<30) | 1 |
| ! | ไม่ใช่ตรรกะ | !(a>b) | !(10>20) | 1 |
โปรแกรม
ต่อไปนี้เป็นโปรแกรม C สำหรับตัวดำเนินการเชิงตรรกะ -
#include<stdio.h>
main ( ){
int a= 10, b = 20, c= 30;
printf (" %d", (a>b) && (a<c));
printf (" %d", (a>b) | | (a<c));
printf (" %d", ! (a>b));
} ผลลัพธ์
เมื่อโปรแกรมข้างต้นทำงาน มันจะให้ผลลัพธ์ดังต่อไปนี้ −
0 1 1
ตัวดำเนินการมอบหมาย
มันกำหนดค่าให้กับตัวแปร ประเภทของตัวดำเนินการมอบหมายคือ −
- การมอบหมายงานง่ายๆ
- การมอบหมายงานง่ายๆ
| ตัวดำเนินการ | คำอธิบาย | ตัวอย่าง |
|---|---|---|
| = | การมอบหมายงานง่ายๆ | a=10 |
| +=,-=,*=,/=,%= | การกำหนดแบบผสม | a+=10"a=a+10 a=10"a=a-10 |
โปรแกรม
ต่อไปนี้เป็นโปรแกรม C สำหรับผู้ดำเนินการมอบหมาย -
#include<stdio.h>
main ( ){
int a= 10,;
printf (" %d", a);
printf (" %d", a+ =10);
} ผลลัพธ์
เมื่อโปรแกรมข้างต้นทำงาน มันจะให้ผลลัพธ์ดังต่อไปนี้ −
10 20
ตัวดำเนินการเพิ่มและลด
ให้เราเข้าใจว่าตัวดำเนินการส่วนเพิ่มคืออะไร
ตัวดำเนินการเพิ่ม (++)
โอเปอเรเตอร์นี้จะเพิ่มค่าของตัวแปรขึ้น 1
ทั้งสองประเภท ได้แก่ −
- ส่วนเพิ่มก่อน
- โพสต์เพิ่มขึ้น
หากเราวางตัวดำเนินการเพิ่มก่อนตัวถูกดำเนินการ ตัวดำเนินการนั้นจะถูกเพิ่มล่วงหน้า ต่อมา ค่าจะเพิ่มขึ้นครั้งแรกและดำเนินการต่อไป
ตัวอย่างเช่น
z = ++a; // a= a+1 z=a
หากเราวางตัวดำเนินการเพิ่มหลังตัวถูกดำเนินการ ค่านั้นจะเพิ่มขึ้นหลังจากดำเนินการแล้ว ค่าจะเพิ่มขึ้นหลังจากดำเนินการแล้ว
ตัวอย่างเช่น
z = a++; // z=a a= a+1
ตัวอย่าง
ต่อไปนี้เป็นโปรแกรม C สำหรับตัวดำเนินการเพิ่ม -
| โปรแกรม | โปรแกรม |
|---|---|
main() {
int a= 10, z;
z= ++a;
printf("z=%d", z);
printf("a=%d", a);
} | main() {
int a= 10, z;
z= a++;printf("z=%d", z);
printf("a=%d", a);
} |
| ผลลัพธ์ | ผลลัพธ์ |
z= 11 a=11 | z= 10 a=11 |
ตัวดำเนินการลด − (- -)
ใช้สำหรับลดค่าของตัวแปรลง 1
ทั้งสองประเภทคือ −
- ลดค่าก่อน
- โพสต์ลดลง
หากตัวดำเนินการลดค่าถูกวางไว้ก่อนตัวถูกดำเนินการ จะเรียกว่าการลดค่าล่วงหน้า ในที่นี้ ค่าจะลดลงก่อนแล้วจึงดำเนินการกับค่านั้น
ตัวอย่างเช่น
z = - - a; // a= a-1 z=a
หากตัวดำเนินการลดค่าถูกวางไว้หลังตัวถูกดำเนินการ จะเรียกว่า post decrement ที่นี่ ค่าจะลดลงหลังจากดำเนินการ
ตัวอย่างเช่น
z = a--; // z=a a= a-1
main() {
int a= 10, z;
z= --a;
printf("z=%d", z);
printf("a=%d", a);
} | main() {
int a= 10, z;
z= a--;
printf("z=%d", z);
printf("a=%d", a);
} |
| ผลลัพธ์ | ผลลัพธ์ |
z= 9 a=9 | z= 10 a=9 |
ตัวดำเนินการระดับบิต
ตัวดำเนินการระดับบิตทำงานบนบิต
| ตัวดำเนินการ | คำอธิบาย |
|---|---|
| & | ระดับบิตและ |
| | | ระดับบิตหรือ |
| ^ | XOR ระดับบิต |
| << | เลื่อนซ้าย |
| >> | กะขวา |
| ~ | สิ่งเติมเต็ม |
| ระดับบิตและ | ||
|---|---|---|
| ก | b | a&b |
| 0 | 0 | 0 |
| 0 | 1 | 0 |
| 1 | 0 | 0 |
| 1 | 1 | 1 |
| ระดับบิต OR | ||
|---|---|---|
| ก | b | a|b |
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 1 |
| Bitwise XOR | ||
|---|---|---|
| ก | b | a^b |
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |

โปรแกรม
ต่อไปนี้เป็นโปรแกรม C สำหรับตัวดำเนินการระดับบิต -
#include<stdio.h>
main ( ){
int a= 12, b = 10;
printf (" %d", a&b);
printf (" %d", a| b);
printf (" %d", a ^ b);
} ผลลัพธ์
เมื่อโปรแกรมข้างต้นทำงาน มันจะให้ผลลัพธ์ดังต่อไปนี้ −
8 14 6
เลื่อนซ้าย
หากค่าถูกเลื่อนไปหนึ่งครั้ง ค่าของมันก็จะเพิ่มขึ้นเป็นสองเท่า
ตัวอย่างเช่น a =10 จากนั้น a<<1 =20

กะขวา
หากค่าของตัวแปรถูกเลื่อนไปทางขวาหนึ่งครั้ง ค่าของตัวแปรจะกลายเป็นครึ่งหนึ่งของค่าเดิม
ตัวอย่างเช่น a =10 จากนั้น a>>1 =5

ส่วนเติมเต็ม
มันแปลงทั้งหมดให้เป็นศูนย์และศูนย์เป็นหนึ่ง
ตัวอย่างเช่น a =5 จากนั้น ~a=2 [ก็ต่อเมื่อพิจารณาเป็น 4 บิตเท่านั้น]

โปรแกรม
ต่อไปนี้เป็นโปรแกรม C อื่นสำหรับตัวดำเนินการระดับบิต -
#include<stdio.h>
main ( ){
int a= 20, b = 10,c=10;
printf (" %d", a<<1);
printf (" %d", b>>1);
printf (" %d", ~c);
} ผลลัพธ์
เมื่อโปรแกรมข้างต้นทำงาน มันจะให้ผลลัพธ์ดังต่อไปนี้ −
40 5 11
ลงชื่อ
ส่วนเติมเต็ม 1 =- [ ไม่ให้ +1]
ตัวอย่างเช่น ~10 =- [10+1] =-11
~-10 =- [-10+1] =9
ยังไม่ได้ลงนาม
ส่วนเติมเต็ม 1 =[65535 – ไม่มี]
ตัวดำเนินการแบบมีเงื่อนไข (? :)
เรียกอีกอย่างว่าโอเปอเรเตอร์สามส่วน
ไวยากรณ์มีดังนี้ −
exp1? exp2: exp3
ถ้า exp1 เป็นจริง exp2 จะถูกประเมิน มิฉะนั้น exp3 จะถูกประเมิน หรือในรูปของ if-else
if (exp1) exp2; else exp3;
โปรแกรม
ต่อไปนี้เป็นโปรแกรม C สำหรับตัวดำเนินการตามเงื่อนไข -
#include<stdio.h>
main ( ){
int z;
z = (5>3) ? 1:0;
printf ("%d",z);
} ผลลัพธ์
เมื่อโปรแกรมข้างต้นทำงาน มันจะให้ผลลัพธ์ดังต่อไปนี้ −
ปฏิบัติการพิเศษ
การดำเนินการพิเศษบางอย่าง ได้แก่ เครื่องหมายจุลภาค เครื่องหมายและ (&) ขนาดของโอเปอเรเตอร์
- จุลภาค ( , ) - ใช้เป็นตัวคั่นสำหรับตัวแปร ตัวอย่างเช่น; a=10, b=20
- ที่อยู่ (&) − รับที่อยู่ของตัวแปร
- ขนาดของ ( ) − ใช้สำหรับรับขนาดของชนิดข้อมูลของตัวแปรเป็นไบต์
โปรแกรม
ต่อไปนี้เป็นโปรแกรม C สำหรับการปฏิบัติการพิเศษ -
#include<stdio.h>
main ( ){
int a=10;
float b=20 ;
printf (" a= %d b=%f", a,b );
printf (" a address =%u\n " , &a ) ;
printf (" b address =%u\n" ,&b ) ;
printf ("a size = %ld\n" , sizeof (a) ) ;
printf ( "b size = %ld ", sizeof (b) ) ;
} ผลลัพธ์
เมื่อโปรแกรมข้างต้นทำงาน มันจะให้ผลลัพธ์ดังต่อไปนี้ −
a=10 b=20.00 Address of a =1 2 3 4 Address of b = 5 6 7 8 Only for this example Size of a = 4 bytes Size of b = 4 bytes