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

ตัวดำเนินการและนิพจน์ต่างๆ ที่ใช้ในภาษาซีมีอะไรบ้าง


ตัวดำเนินการดำเนินการกับข้อมูล จำแนกได้ดังนี้ −

  • ตัวดำเนินการเลขคณิต
  • ตัวดำเนินการเชิงสัมพันธ์
  • ตัวดำเนินการทางตรรกะ
  • ตัวดำเนินการมอบหมาย
  • ตัวดำเนินการเพิ่มและลดค่า
  • ตัวดำเนินการระดับบิต
  • ตัวดำเนินการแบบมีเงื่อนไข
  • ตัวดำเนินการพิเศษ

ตัวดำเนินการเลขคณิต

ตัวดำเนินการเหล่านี้ใช้สำหรับการคำนวณเชิงตัวเลข (หรือ) เพื่อดำเนินการคำนวณ เช่น การบวก การลบ เป็นต้น

ตัวดำเนินการ คำอธิบาย ตัวอย่าง 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