目次
1. Panimula
Ang wikang C ay malawakang ginagamit sa system programming at pag-develop ng embedded system, at sa loob nito, ang mga operator ay mahalagang elemento para sa mga pangunahing operasyon. Sa artikulong ito, detalyadong ipapaliwanag ang mga operator sa wikang C, mula sa mga batayang gamit hanggang sa mga advanced na aplikasyon, error handling, at mga paraan ng pag-optimize. Sa pamamagitan ng mas malalim na pag-unawa sa mga operator, magiging posible ang mas epektibong pagprograma, maiiwasan ang paglitaw ng mga error, at makakasulat ng code na may mas mahusay na pagganap. Sa ikalawang bahagi, tatalakayin din ang mga teknik sa error handling at pag-optimize ng mga operator, at magbibigay ng praktikal na kaalaman na magagamit sa totoong sitwasyon ng pag-develop. Sa pamamagitan ng artikulong ito, magkakaroon ka ng kumpiyansa na magamit nang mahusay ang mga operator sa wikang C.2. Mga Pangunahing Operador at Uri
Ano ang Operador?
Ang mga operator ay mga simbolong ginagamit sa wikang C upang manipulahin ang data. Sa wikang C, mayroong arithmetic operator, assignment operator, comparison operator, logical operator, at iba pa, na mahalaga para sa pagbuo ng lohika ng programa.Arithmetic Operator
Ang arithmetic operator ay mga operator para sa pangunahing operasyon ng mga numero.+
(addition):a + b
→ nagdadagdag ng dalawang numero.-
(subtraction):a - b
→ nagbabawas ng dalawang numero.*
(multiplication):a * b
→ nagmumultiply ng dalawang numero./
(division):a / b
→ naghahati ng dalawang numero.%
(modulo):a % b
→ nagbabalik ng remainder ng a kapag hinati sa b.
Assignment Operator
Ginagamit ang assignment operator upang mag-assign ng halaga sa variable.=
(assignment):a = 5
→ nag-aassign ng 5 sa variable a.+=
(additive assignment):a += 2
→ nagdadagdag ng 2 sa a, at ini-assign ang resulta pabalik sa a.-=
(subtractive assignment):a -= 1
→ nagbabawas ng 1 mula sa a, at ini-assign ang resulta pabalik sa a.

Comparison Operator
Ang comparison operator ay nagko-compare ng dalawang halaga at nagbabalik kung true o false ang resulta.==
(equal):a == b
→ nagbabalik ng true kung a at b ay magkapareho.!=
(not equal):a != b
→ nagbabalik ng true kung a at b ay hindi magkapareho.>
(greater than):a > b
→ nagbabalik ng true kung a ay mas malaki kaysa b.
Logical Operator
Ginagamit ang logical operator kapag pinagsasama ang maraming kondisyon para sa pagsusuri.&&
(logical AND):a && b
→ nagbabalik ng true kung parehong a at b ay true.||
(logical OR):a || b
→ nagbabalik ng true kung alinman sa a o b ay true.
sizeof
Operator
Ang sizeof
operator ay ginagamit upang kalkulahin ang laki na kinukuha ng variable o data type sa memorya. Lalo na kapaki-pakinabang ito kapag nag-o-optimize ng memory efficiency ng structs at arrays.int size = sizeof(int); // Ang int ay karaniwang 4 na byte
Kapaki-pakinabang din ito kapag sinusuri ang laki ng structs at arrays.struct example {
int a;
char b;
};
int size = sizeof(struct example); // Kunin ang laki ng struct
Tingnan natin ang halimbawa ng pagkwenta ng bilang ng mga elemento ng array.int arr[10];
int num_elements = sizeof(arr) / sizeof(arr[0]); // Kalkulahin ang bilang ng mga elemento ng array
3. Detalye ng Bawat Operator at Mga Halimbawa ng Paggamit
Halimbawa ng Paggamit ng Arithmetic Operators
#include <stdio.h>
int main() {
int a = 10;
int b = 3;
printf("Pagdaragdag: %dn", a + b);
printf("Pagbabawas: %dn", a - b);
printf("Pagmumultiply: %dn", a * b);
printf("Pagbabahagi: %dn", a / b);
printf("Resto: %dn", a % b);
return 0;
}
Ipinapakita ng code na ito ang pangunahing halimbawa ng paggamit ng arithmetic operators. Sa division, kailangan tandaan na ang mga operasyon sa pagitan ng mga integer ay nagtatapon ng mga decimal na bahagi.4. Prioridad ng mga Operator at mga Patakaran sa Pagsasama
Ang prioridad ng mga operator ay nagtatakda kung anong pagkakasunod-sunod isasagawa ang pagkalkula kapag maraming operator ang magkasamang nasa isang expression. Gayundin, ang mga patakaran sa associativity (kaliwang associativity, kanang associativity) ay nagtatakda kung alin ang mauunang i-evaluate kapag magkapareho ang prioridad ng mga operator.Halimbawa ng Prioridad
int a = 2 + 3 * 4; // Resulta ay 14
Sa expression na ito, ang multiplication ay may mas mataas na prioridad kaysa sa addition, kaya ang resulta ay 14
. Kung nais mong isagawa muna ang addition, maaari mong gamitin ang mga panaklong upang baguhin ang pagkakasunod-sunod.int a = (2 + 3) * 4; // Resulta ay 20
Listahan ng Prioridad ng mga Operator
Prioridad | Operator |
---|---|
Mataas | ++ , -- (increment, decrement) |
Katamtaman | * , / , % (multiplication, division, modulus) |
Mababa | + , - (addition, subtraction) |
Paliwanag sa Patakaran ng Associativity
Ang assignment operator ng C language na=
ay right-associative. Nakakatulong ito kapag gumagawa ng sunud-sunod na assignment tulad ng sumusunod.int a, b, c;
a = b = c = 5; // I-assign ang 5 sa lahat ng variable
Dahil right-associative, ang c = 5
ay unang isinasagawa, sinusundan ng b = c
, at sa huli ay a = b
.
5. Pag-aaplay ng mga Operator: Bitwise Operator at Shift Operator
Bitwise Operator
Ang bitwise operator ay ginagamit upang manipulahin ang mga numero sa antas ng bit. Lalo itong karaniwang ginagamit sa mga low-level na sistema at embedded system.int a = 5; // 0101
int b = 3; // 0011
int result = a & b; // Resulta ay 0001 (1)
Sa halimbawang ito, ginagamit ang bitwise AND (&
) upang kalkulahin ang lohikal na AND ng bawat bit ng dalawang numero.Shift Operator
Ang shift operator ay naglilipat ng mga bit pakaliwa o pakanan upang manipulahin ang halaga. Madalas itong ginagamit dahil mas epektibo ito kaysa sa multiplikasyon o dibisyon para manipulahin ang mga numero.int a = 5; // 0101
int result = a << 1; // 1010 (10) -> a ay nadoble
Ang left shift (<<
) ay maaaring gamitin upang i-multiply ang isang numero sa kapangyarihan ng 2, isang epektibong paraan ng pagkalkula.6. Paghawak ng Error at Pag-optimize ng mga Operator
Paghawak ng Error sa Zero Division
Ang paghahati ng zero ay mathematically invalid, at sa C language, kapag naganap ang zero division, nagka-crash ang programa. Kaya mahalagang i-check nang maaga kung may zero division. Ang sumusunod na code ay halimbawa ng pag-check na walang zero division.#include <stdio.h>
int main() {
int a = 10;
int b = 0;
if (b != 0) {
printf("Resulta ng paghahati: %dn", a / b);
} else {
printf("Error: Hindi maaaring hatiin ng zero. n");
}
return 0;
}
Sa code na ito, kapag ang b
ay hindi zero, isinasagawa ang paghahati, at kapag zero, nagpapakita ng mensahe ng error. Sa ganitong paraan, napipigilan ang pag-crash ng programa at nasisiguro ang maayos na pagtakbo.Paghawak ng Error sa Overflow
Ang overflow ay nangyayari kapag ang resulta ng operasyon ay lumampas sa saklaw ng uri ng variable. Sa C language, hindi awtomatikong natutuklasan ang overflow, kaya kailangan mag-check nang maaga. Ang sumusunod ay simpleng halimbawa para maiwasan ang overflow.#include <stdio.h>
#include <limits.h> // Gamitin ang INT_MAX at iba pa
int main() {
int a = INT_MAX;
int b = 1;
if (a > INT_MAX - b) {
printf("Error: Nagkaroon ng overflow. n");
} else {
int result = a + b;
printf("Resulta: %dn", result);
}
return 0;
}
Sa code na ito, tinitiyak kung lalampas ang INT_MAX
(pinakamataas na halaga ng uri int
) nang maaga upang maiwasan ang overflow. Sa pamamagitan ng maagang pagtuklas ng overflow, napipigilan ang hindi inaasahang pag-uugali.Pag-optimize ng Operasyon
Ang pag-optimize gamit ang mga operator ay kapaki-pakinabang lalo na sa mga kapaligirang kung saan mahalaga ang performance. Sa pamamagitan ng shift operator, maaaring mapabilis ang multiplication at division. Narito ang isang halimbawa.int a = 5;
int result = a << 1; // gawing doble ang a
Sa code na ito, ginagamit ang shift operator upang gawing doble ang a
. Kumpara sa multiplication, ang bit shift ay magaan na operasyon, at madalas gamitin lalo na sa embedded systems at low-level programming.