C da Operatorlar(5-dars)
Ushbu qo'llanmada siz C dagi turli operatorlar haqida bilib olasiz.
Operator bu qiymat yoki o'zgaruvchida ishlaydigan belgidir. Masalan: +
bu qo'shilishni amalga oshiruvchi operator.
C da turli xil operatsiyalarni bajarish uchun keng ko'lamli operatorlarga ega.
C Arifmetik operatorlar
Arifmetik operatorlar sonli qiymatlarda (variablelar va constanttantlar) qo'shish, ayirish, ko'paytirish, bo'lish va boshqalar kabi matematik operatsiyalarni bajaradi.
Operatorlar Operatorlarning ma'nosi
+ qo'shish
- ayirish
* ko'paytirish
/ bo'lish
% mod olish (ya'ni bir sonni boshqa songa bo'lganingizda chiqadigan qoldiq)
1-misol: Arifmetik operatorlar
// Arifmetik operatorlarning ishlashi
# include <stdio.h>
int main ()
{
int a = 9, b = 4, c;
c = a + b;
printf ("a + b =% d \ n", c);
c = a-b;
printf ("a-b =% d \ n", c);
c = a * b;
printf ("a * b =% d \ n", c);
c = a / b;
printf ("a / b =% d \ n", c);
c = a% b;
printf ("a ni b ga bo'lganimizda qoldiq %d ga teng", c);
qaytish 0;
}
Natija
a+b = 13
a-b = 5
a*b = 36
a/b = 2
a ni b ga bo'lganimizda qoldiq 1 ga teng
+
, -
va *
operatorlari qo'shish, ayirish va ko'paytirish siz kutganingizdek mos ravishda hisoblab chiqadi.
Oddiy hisoblashda 9/4 = 2.25. Lekin natija 2 ga teng.
Buning sababi, a
va b
o'zgaruvchilar ikkalasi ham integer(butun) sonlardir. Demak, natija ham integer (butun) songa teng bo'ladi. Kompilyator .
dan keyingi sonlarni e'tiborsiz qoldiradi va 2.25
o'rniga 2
-javobni ko'rsatadi.
Modul operatori %
qoldiqni hisoblab chiqadi. a = 9
ni b = 4
ga bo‘lganda, qoldiq 1
ga teng.
%
Operatorini faqat butun sonlar bilan foydalanish mumkin.
Aytaylik a = 5.0
, b = 2.0
, c = 5
va d = 2
ga teng bo'lsa. C da:
// O'zgaruvchilarda biri float o'zgaruvchidir va natija ham float bilan chiqadi:
a/b = 2.5
a/d = 2.5
c/b = 2.5
// Ikkala o'zgaruvchi ham integer va natija ham integer bilan chiqadi:
c/d = 2
C da Increment va Decrement operatorlari
- Increment - oshirish
- Decrement - kamaytirish
C da const va variable qiymatlarini 1 ga o'zgartirish uchun ikkita operator mavjud: increment ++
va decrement --
operatorlari.
###2-misol: Increment va Decrement Operatorlari
// Increment and decrement operatorlarning ishlatilishi
#include <stdio.h>
int main()
{
int a = 10, b = 100;
float c = 10.5, d = 100.5;
printf("++a = %d \n", ++a);
printf("--b = %d \n", --b);
printf("++c = %f \n", ++c);
printf("--d = %f \n", --d);
return 0;
}
Natija:
++a = 11
--b = 99
++c = 11.500000
--d = 99.500000
Bu yerda ++
va --
operatorlari prefiks sifatida ishlatiladi. a++
a
ning qiymatini 1
ga oshiryabdi --b
esa b
ning qiymatini 1
ga kamaytiryabdi.
C Assignment Operatorlari (Tayinlash Operatorlari)
O'zgaruvchiga qiymat berish uchun tayinlash operatori ishlatiladi. Eng keng tarqalgan tayinlash operatori =
Operator Misol uchun Bir xill
= a = b a = b
+= a += b a = a+b
-= a -= b a = a-b
*= a *= b a = a*b
/= a /= b a = a/b
%= a %= b a = a%b
3-misol: Assigment operatorlari
// Assignment operatorlarining ishlashi
#include <stdio.h>
int main()
{
int a = 5, c;
c = a; // c 5 ga teng
printf("c = %d\n", c);
c += a; // c 10 ga teng
printf("c = %d\n", c);
c -= a; // c 5 ga teng
printf("c = %d\n", c);
c *= a; // c 25 ga teng
printf("c = %d\n", c);
c /= a; // c 5 ga teng
printf("c = %d\n", c);
c %= a; // c 0 ga teng
printf("c = %d\n", c);
return 0;
}
Natija
c = 5
c = 10
c = 5
c = 25
c = 5
c = 0
C Relational Operatorlari
Sodda qilib aytganda, Relational operator ikkita operand o'rtasidagi munosabatni tekshiradi. Agar munosabat to'g'ri bo'lsa, u 1 ni qaytaradi agar munosabat noto'g'ri bo'lsa, 0 qiymatini qaytaradi. Relational operatorlari expressionlarda(shartlar) berilayotganda yoki looplarda ishlatiladi:
Operator Operatorning ma'nosi Exampellar
== Ga teng 5 == 3 0 qiymat qaytaradi
> Undan kattaroq 5 > 3 1 qiymat qaytaradi
< Undan kichiqroq 5 < 3 0 qiymat qaytaradi
!= Ga teng emas 5 != 3 1 qiymat qaytaradi
>= Undan kattaroq yoki Ga teng 5 >= 3 1 qiymat qaytaradi
<= Undan kattaroq yoki Ga teng 5 <= 3 0 qiymat qaytradi
4-misol: Relation operatorlar
#include <stdio.h>
int main()
{
int a = 5, b = 5, c = 10;
printf("%d == %d is %d \n", a, b, a == b);
printf("%d == %d is %d \n", a, c, a == c);
printf("%d > %d is %d \n", a, b, a > b);
printf("%d > %d is %d \n", a, c, a > c);
printf("%d < %d is %d \n", a, b, a < b);
printf("%d < %d is %d \n", a, c, a < c);
printf("%d != %d is %d \n", a, b, a != b);
printf("%d != %d is %d \n", a, c, a != c);
printf("%d >= %d is %d \n", a, b, a >= b);
printf("%d >= %d is %d \n", a, c, a >= c);
printf("%d <= %d is %d \n", a, b, a <= b);
printf("%d <= %d is %d \n", a, c, a <= c);
return 0;
}
Natija
5 == 5 is 1
5 == 10 is 0
5 > 5 is 0
5 > 10 is 0
5 < 5 is 0
5 < 10 is 1
5 != 5 is 0
5 != 10 is 1
5 >= 5 is 1
5 >= 10 is 0
5 <= 5 is 1
5 <= 10 is 1
C da Logical Operatorlar(Mantiqiy operatorlar)
Mantiqiy operatorni o'z ichiga olgan ifoda, natijaning to'g'ri yoki noto'g'ri ekanligiga qarab 0 yoki 1 ni qaytaradi. Mantiqiy operatorlar odatda C da expressionlarda (if elseda shart yozganimizda)ishlatiladi.
Operator Ma`nosi
&& Logical and operatori.
Barcha operandlar true bo'lsagina
true
|| Logical or operatori.
Bitta operand true bo'lsa ham true
! Logical not operatori. Operand 0 ga teng bo'lgan taqdirdagina to'g'ri
5-misol: Logical Operatorlar
// logical operatorlarning ishlashi
#include <stdio.h>
int main()
{
int a = 5, b = 5, c = 10, result;
result = (a == b) && (c > b);
printf("(a == b) && (c > b) is %d \n", result);
result = (a == b) && (c < b);
printf("(a == b) && (c < b) is %d \n", result);
result = (a == b) || (c < b);
printf("(a == b) || (c < b) is %d \n", result);
result = (a != b) || (c < b);
printf("(a != b) || (c < b) is %d \n", result);
result = !(a != b);
printf("!(a != b) is %d \n", result);
result = !(a == b);
printf("!(a == b) is %d \n", result);
return 0;
}
Natija
(a == b) && (c > b) is 1
(a == b) && (c < b) is 0
(a == b) || (c < b) is 1
(a != b) || (c < b) is 0
!(a != b) is 1
!(a == b) is 0
Mantiqiy operatordagi dasturining izohi:
(a == b) && (c > 5)
1 bo'ladi, chunki ikkala operand(a == b)
va(c > b)
1 bo'ladi(ya'ni true). _(a == b) && (c < b)
0 bo'ladi chunki(c < b)
operand 0 ga teng(ya'ni false qiymatga ega)(a == b) || (c < b)
1 bo'ladi chunki(a = b)
operand 1 dir(ya'ni true)(a != b) || (c < b)
0 bo'ladi chunki(a == b)
operand 1 dir. Demak,!(a == b)
0 dir(false).
Comma operatori
Bog'liq ifodalarni bir-biriga bog'lash uchun Comma operatori ishlatiladi. Masalan:
int a, c = 5, d;
Sizeof operatori(o'lchov operatori)
Sizeof - bu ma'lumotlar (constantlar, variablelar)hajmini qaytaradigan operatoridir.
6-misol: Sizeof Operatori
#include <stdio.h>
int main()
{
int a;
float b;
double c;
char d;
printf("Size of int=%lu bytes\n",sizeof(a));
printf("Size of float=%lu bytes\n",sizeof(b));
printf("Size of double=%lu bytes\n",sizeof(c));
printf("Size of char=%lu byte\n",sizeof(d));
return 0;
}
Natija
Size of int = 4 bytes
Size of float = 4 bytes
Size of double = 8 bytes
Size of char = 1 byte
Ternary operatori ?:
, Reference operator &
, dereference operator *
va member selection
operatori -> kabi boshqa operatorlar keyingi o'quv qo'llanmalarida o'rganamiz.