C proqramlaşdırmasında operatorlar

Bir proqramı kodlaşdırdığımızda əsas məqsədimiz müxtəlif dəyişənlər üzərində bəzi əməliyyatlar aparmaqdır. Bu əməliyyatlar hesab və ya məntiqi əməliyyatlar ola bilər. Bu əməliyyatları həyata keçirmək üçün fərqli operatorlara ehtiyacımız var. Bu operatorlar tərtibçiyə dəyişənlər üzərində ediləcək əməliyyat / əməliyyat barədə məlumat verən simvollardır. C dilində həyata keçirilən müxtəlif növ əməliyyatlar mövcuddur. Onlar:

Aritmetik Operator

Hesab operatorları toplama, çıxma, vurma, bölmə və modul kimi arifmetik əməliyyatları yerinə yetirmək üçün istifadə olunan operatorlardır (bölmənin qalan hissəsini tapır).

int intVar1, intVar2, intResult;
intResult = intVar1 + intVar2;
intResult = intVar1 - intVar2;
intResult = intVar1 * intVar2;
intResult = intVar1 / intVar2;
intResult = intVar1% intVar2;

Bitsel Operator

Bu operator dəyişəndəki məlumatların bit dəyərləri üzərində əməliyyatı yerinə yetirmək üçün istifadə olunur. Bitwise operatorların müxtəlif növləri var.

VƏ (&)

bu, dəyişənin bitlərində yerinə yetirilən AND əməliyyatıdır. Tutaq ki, var1 və var2 iki dəyişənimiz var. Sonra cədvəldə göstərildiyi kimi bu iki dəyişən üzərində bit və əməliyyat. Nəticə 1 olaraq verilir, yalnız hər ikisində bit 1 varsa, başqa nəticə 0 olur.

Beləliklə, dəyişənlərin sıfır olmayan bəzi nömrələri varsa, əvvəlcə bitlərə çevriləcək, sonra AND əməliyyatı yerinə yetiriləcəkdir.

Məsələn, fərz edək ki, var1 = 20 və var2 = 60, sonra bitliklə AND bu dəyişənlər üzərindədir:
var1 = 20 = 0001 0100
var2 = 60 = 0011 1100
var1 & var2 = 0001 0100 = 24

VƏ (|)

Bu operator bitlərdən ən az biri dəyişənlərdə 1 olduqda nəticə 1 verir. '|' İlə işarələnir.

var1 = 20 = 0001 0100
var2 = 60 = 0011 1100
var1 | var2 = 0011 1100 = 60

XOR (^)

Hər iki dəyişəndəki bitlər fərqli olduqda 1 ilə nəticələnir və eyni olduqda 0 ilə nəticələnir. '^' İlə işarələnir.

var1 = 20 = 0001 0100
var2 = 60 = 0011 1100
var1 ^ var2 = 0010 1000 = 40

DEYİL (~)

Bu operator hər vəziyyətdə mövcud olan biti inkar edir. Yəni 0-dan 1-ə və 1-dən 0-a çevirir.

Buradan ~ var1 = ~ (0001 0100) = 1110 1011 = 235

Sol Shift Operatoru (<

Bu operator, bit sayını sola dəyişdirmək üçün istifadə olunur. Dəyişdiriləcək bitlərin sayı operatorun RHS-sinə əlavə olunur. Bitlər sola keçdikdə, sağa 0s əlavə ediləcək.

Məsələn, var1 = 20 = 0001 0100 nəzərə alın
İndi var1 << 2 = 0001 0100 << 2 = 0101 0000

Sağ Dəyişmə Operatoru (>>)

Bu, sol növbə operatoruna ziddir. Burada operatorun sağ tərəfində göstərilən bitlərin sayından asılı olaraq bitlər sağa çəkilir. Bitlər sağa keçdikdə, sola 0s əlavə olunur.

Məsələn, var1 = 20 = 0001 0100 nəzərə alın
İndi var1 >> 2 = 0001 0100 >> 2 = 0000 0101

Təyinat Operatoru

Təyinat operatoru, bəzi əməliyyatların və ifadələrin nəticələrini təyin etmək üçün istifadə olunur. Ən sadə və ümumi təyinat operatorlarından biri '=' (bərabərdir). Lakin C nəticəni sadə formada əldə etmək üçün hesab operatorlarını və ya bit əməliyyatçılarını təyinat operatoru ilə birləşdirməyə imkan verir.

int intVar1 = 100, intVar2 = 10;
intVar1 + = intVar2; // Nəticə 110-dur
intVar1 - = intVar2; // Nəticə 90-dur
intVar1 * = intVar2; // Nəticə 1000-dur
intVar1 / = intVar2; // Nəticə 10-dur
intVar1% = intVar2; // Nəticə 0-dur

Artım və Azaltma Operatoru

Hər hansı bir rəqəmdən və ya dəyişəndən 1 əlavə etdikdə və ya 1 çıxardıqda, müvafiq olaraq '+' və ya '-' hesab operatorundan istifadə edirik. Həm də tam ifadəni a = b + 1 və c = b-1 kimi yazırıq. Ancaq C, xüsusi '++' və '-' xüsusi operatorlarından istifadə edərək rəqəmləri 1 artırmaq və ya azaltmaq üçün başqa bir asan mexanizm təqdim edir.

Məsələn, intVar1 = 50 olsun. İndi dəyəri 1-ə artırmaq lazımdırsa, onu aşağıdakı kimi yaza bilərik:

intVar1 ++; // avtomatik olaraq intVar dəyərini 1 artırır və nəticəni intvar1-ə təyin edir

Eynilə dəyəri 1-ə endirməli olsaq, yazırıq:
intVar1–; // avtomatik olaraq intVar dəyərini 1 azaldır və nəticəni intvar1-ə təyin edir

İki artırmaq və ya azaltmaq lazımdırsa, yuxarıdakı ifadəni iki dəfə yazmalıyıq.
Artım və azaltma üçün yuxarıdakı ifadə aşağıda da yazıla bilər.
++ intVar1; // avtomatik olaraq intVar dəyərini 1 artırır və nəticəni intvar1-ə təyin edir

Eynilə dəyəri 1-ə endirməli olsaq, yazırıq:
–İntVar1; // avtomatik olaraq intVar dəyərini 1 azaldır və nəticəni intvar1-ə təyin edir

Burada yuxarıdakı hər iki əməliyyatdan sonra nəticə dəyərləri eynidir. Ancaq döngələrdə və ya bəzi hesab əməliyyatlarında istifadə edildikdə yalnız fərq hiss olunur. İntVar1 ++ istifadə edildikdə, əvvəlcə intVar1-də mövcud olan dəyərləri təyin edir və ya istifadə edir və sonra onu 1 artıraraq intVar1-ə təyin edir. ++ intVar1 istifadə edildikdə əvvəlcə dəyəri 1-ə artırır və yeni dəyəri intVar1-ə verir, daha sonra bu yeni dəyərlər istənilən hesablamalarda / əməliyyatlarda istifadə olunur. Eyni, azalma operatoru ilə də əlaqəlidir.
Aşağıdakı sadə bir proqram eyni şeyi göstərir. Burada qeyd edə bilərik ki, intVal ++ istifadə edildikdə printf bəyanatında göstərilən dəyər onu 1 artırmazdan əvvəldir. İkinci printf istifadə edildikdə, artan dəyərdən istifadə olunur, yəni 26 və sonra yenidən 1 artırır və nəticəni 27 kimi göstərir. azalma operatoru ilə eyni naxışı da görə bilər.

#include <stdio.h> 

int main(){
	int intVal = 25;
	printf("\n\nValue of intVal before incrementing is %d \n", intVal);
	printf("Value of intVal using increment operator as intVal++ is %d\n", intVal++);
	printf("Value of intVal using increment operator as ++intVal is %d\n", ++intVal);

	printf("\n\nValue of intVal before decrementing is %d \n", intVal);
	printf("Value of intVal using decrement operator as intVal-- is %d\n", intVal--);
	printf("Value of intVal using decrement operator as --intVal is %d\n", --intVal);
}

Şərti Operator

Bu operator şərtləri yoxlamaq üçün istifadə olunur. Vəziyyət kimi işləyir, lakin aşağıdakı operatordan istifadə edir:

vəziyyət? true_result: false_result;

yəni; şərti yoxlayır, düzgündürsə / keçərsə true_resultu göstərər, əks halda false_result göstərər.

chrGrade = (intAvg> 80)? 'A' : 'B';
* chrNumType = (intVal> = 0)? "Müsbət": "Mənfi";

Əlaqəli Operator

Bu operatorlar hər iki ədədi dəyişəndən bərabərliyi, qeyri bərabərliyi, azdan az, bərabərdən az, böyük, böyük və ya bərabərliyi yoxlamaq üçün istifadə olunur. Ümumiyyətlə bu operatorlar if yoxlamaları vəziyyəti yoxlanarkən və döngələr zamanı istifadə olunur. Çünki bu operatorların nəticəsi həmişə DOĞRU və ya YALAN olur.


if(intVal1 == intVal2) {
	printf("Both the values are same!");
}else{
	printf("Both the values are NOT same!");
}

 Məntiqi Operator

Bu operatorlardan əlaqəli operatorlarla yanaşı istifadə olunur. Daha spesifik olaraq, bu operatorlar AND operatorunu (&&) istifadə edərək əlaqəli operatorların şərtlərini birləşdirir və ya OR operatorundan (||) istifadə edərək münasibət şərtlərini nəzərdən keçirir və ya NOT operatorunu (!) İstifadə edərək münasibət şərtini inkar edir. bunlar əsasən if ifadələrində və for / while döngüsündə şərtlər yoxlanılarkən istifadə olunur.

Xahiş edirəm burada qeyd edək ki, həm bitli operator, həm də məntiqi operator ifadəni qiymətləndirmək üçün eyni məntiqdən istifadə edir. Ancaq bitlərə operator tətbiq olunur - məlumatların əsas təsviri, məntiqi operatorlar ifadələr və ifadələr üzərində işləyir. Beləliklə, məntiq eyni olsa da, hər iki operator fərqlidir.

Müxtəlif Operator

Yuxarıda sadalanan operatorlardan başqa C dilində istifadə olunan az sayda operator var.

sizeof ()

bu, C-dəki dəyişənlərin ölçüsünü tapmaq üçün istifadə olunur. Bu dəyişənlər ibtidai, primitiv olmayan və istifadəçi tərəfindən müəyyən edilmiş dəyişən tiplərinə qədər hər hansı bir dəyişən növü ola bilər. Bunu hətta veri tiplərinin ölçüsünü tapmaq üçün də istifadə edə bilərik. Misal üçün,

printf("Size of integer is %d", sizeof(int)); // displays ‘Size of integer is 4’
printf("Size of chrOption is %d", sizeof(chrOption)); // displays ‘Size of chrOption is 1’
printf("Size of strStudent is %d", sizeof(strStudent)); // displays ‘Size of strStudent is 33’ 
(structure size)

İstənilən növün ölçüsünü almaq və başqa bir dəyişənə təyin etmək üçün sizeof operatorundan istifadə etdikdə, bunu ölçüsü_t tipinə təyin edə bilərik. Bu stddef.h başlıq sənədində müəyyən edilmiş bir növdür. Bu sənəddə imzasız int növü kimi təyin edilir (typedef açar sözündən istifadə edərək elan edilir; bu səbəbdən də type size_t). Ancaq sistemə görə imzasız qısa int və ya imzasız uzun ola bilər. Bu operator istənilən dəyişən, massiv, quruluş, birləşmə, göstəricilər və s. Ölçüsünü almaq üçün istifadə edilə bilər.

Sizeof operatorunu massivlərdə istifadə edərkən massiv funksiya parametri olduqda istifadə edilməməsinə diqqət yetirilməlidir. Bu vəziyyətdə düzgün nəticə verməyəcəkdir.

Ünvan Operatoru (&

Bu operator dəyişənin ünvanını qaytarır. Dəyişənin ünvanını tapmaq üçün dəyişən adından əvvəl əlavə olunur.

printf("Address of chrOption is %x", &chrOption); // displays address of chrOption
scanf("%d", &intVal); // input value is entered at the address of intVal

İşaretçi Operatoru (*)

Bu operator dəyişən addan əvvəl əlavə edildikdə, göstərici dəyişən kimi çıxış edir.

int *intPtr;
float *flArray [100];
char *chrName[10];

Şərh yaz

Translate »