ตัวดำเนินการดำเนินการกับข้อมูล จำแนกได้ดังนี้ −
- ตัวดำเนินการเลขคณิต
- ตัวดำเนินการเชิงสัมพันธ์
- ตัวดำเนินการทางตรรกะ
- ตัวดำเนินการมอบหมาย
- ตัวดำเนินการเพิ่มและลดค่า
- ตัวดำเนินการระดับบิต
- ตัวดำเนินการแบบมีเงื่อนไข
- ตัวดำเนินการพิเศษ
ตัวดำเนินการเลขคณิต
ตัวดำเนินการเหล่านี้ใช้สำหรับการคำนวณเชิงตัวเลข (หรือ) เพื่อดำเนินการคำนวณ เช่น การบวก การลบ เป็นต้น
ตัวดำเนินการ | คำอธิบาย | ตัวอย่าง | 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