370 likes | 718 Views
OPERATÖRLER. Öğrenilmesi gerekenler: Operatör, operand Öncelik sırası. Operatör nedir?. Operatörler, nesneler veya sabitler üzerinde önceden tanımlanmış birtakım işlemleri yapan atomlardır. C de her ifade en az bir operatör içerir. c=a*b/2; 3 operatör var: =*/ d=fonk(); 2 operatör var: =()
E N D
OPERATÖRLER Öğrenilmesi gerekenler: Operatör, operand Öncelik sırası
Operatör nedir? • Operatörler, nesneler veya sabitler üzerinde önceden tanımlanmış birtakım işlemleri yapan atomlardır.
C de her ifade en az bir operatör içerir. • c=a*b/2; 3 operatör var: =*/ • d=fonk(); 2 operatör var: =() • c=a>4; 2 operatör var: => • ++x; 1 operatör var: ++
Her operatörün operandları vardır. Operandlar operatörlerin işleme soktukları nesneler ya da sabitlerdir. • a+b operatör: +, operandları: 2 tane a,b • c++ operatör: ++, operandları: 1 tane c • b>c operatör: >, operandları: 2 tane b,c
Yüksek Öncelik Düşük Öncelik
UYARI • Operatörlerin içinde bir kısmı soldan sağa incelenir, • Bir kısmı da sağdan sola incelenir.
Operatörlerin hangi yönde önceliklerine bakılacağını gösteren tablo () soldan sağa ! ++ -- sağdan sola * / % soldan sağa + - soldan sağa > >= < <= soldan sağa == != soldan sağa && soldan sağa || soldan sağa = sağdan sola
Operatörler arasındaki öncelik ilişkisi • c=a+b*2; ifadesi derleyici tarafından şu sırada ele alınır. • işlem1: b*2; • işlem2: a+işlem1; • işlem3: c=işlem2;
x=a*b-2/3; • işlem1: a*b; • işlem2: 2/3; • işlem3: işlem1 – işlem2; • İşlem4: x=işlem3; • Aynı önceliğe sahip olan operatörler arasında işlem sırası iki şekilde de olabilir.
a=x-b/2*c; • Bölme ve çarpma operatörleri aynı önceliğe sahiptir. • İ1: b/2 • İ2: İ1*c • İ3: x-İ2 • İ4: a=İ3
C de atama operatörü sağdan sola öncelikli operatördür. • a=b=c; • İ1: b=c • İ2: a=İ1
a=(b+2)*80; • İ1: (b+2) • İ2: İ1*80 • İ3: a=İ2
Operatörleri 3 sınıfa sınıflandırılır • İşlevlerine göre • Operan sayılarına göre • Operatörün konumuna göre
İşlevlerine göre operatörler • Aritmetik • İlişkisel • Mantıksal • Bit • Gösterici • Özel amaçlı operatörler İlk 3 tanesi diğer programlama dillerinde olabilir. Bit ve gösterici operatörleri bir çok programlama dillerinde olmazlar.
Aritmetik operatörler Dört işlemle ilgili olan; • * çarpma • / bölme • % mod alma (bölümden kalan) • + toplama • - çıkartma
İlişkisel(karşılaştırma)operatörleri • > büyük • < küçük • >= büyük yada eşit • <= küçük yada eşit • == eşit • != eşit değil
Mantıksal operatörler • ! Değil (not) • && ve (and) • || veya(or)
Bit operatörleri • ~ değil • << sola kaydırma • >> sağa kaydırma • & ve • ^ özel veya • | veya
Gösterici operatörleri • * içerik alma • & adres alma • [ ] indeks • ->
Özel amaçlı operatörler • ( ) fonksiyon çağırma ve öncelik değiştirme • . Yapı elemanlarına erişme • (tür) tür değiştirme • ?: koşul • = atama • +=, *=, /=,… işlemli atama
Aritmetik operatörler Aritmetik operatörler öncelik sırası ++ -- sağdan sola c=10%4+1; • İ1:10%4 2 • İ2:İ1+1 3 • İ3:c=i2 3
Artırma(++) Eksiltme(--) • ++, 1 artır -- 1 eksilt anlamındadır. • ++a ile a++; ikisi de aynı anlamdadır. a=a+1; • --a ile a--; ikisi de aynı anlamdadır. a=a-1;
#include<stdio.h> void main(void) { int a,b; a=10; b=++a; printf("a=%d b=%d\n",a,b); a=10; b=a++; printf("a=%d b=%d\n", a,b); }
İlişkisel operatörler • C’de ilişkisel operatörlerin ürettiği değer, koşul sağlanıyorsa 1, sağlamıyorsa 0 değerini üretir. • a=5>2; /*a=1*/ • b=3==3 /*b=1*/ • c=4<=1 /*c=0*/
x=10; y=20; z=y<=x+10; /*z değeri nedir?*/ a=5; b=10; c=a==10<b+1; /*c değeri nedir?*/ Ödev: a=10*2+1>=4*4+5==5>5-3*2; /*a değeri nedir?*/
İ1: 10*2 20 • İ2: 4*4 16 • İ3: 3*2 6 • İ4: İ1+1 21 • İ5: İ2+5 21 • İ6: 5-İ3 -1 • İ7: İ4>=İ5 1 • İ8: 5>İ6 1 • İ9: İ7==İ8 1 • İ10: a=İ9 • Sonuç a=1
Mantıksal operatör • ! değil tek operandlı • && ve iki operandlı • || veya iki operandlı İlişkisel operatörlerde; koşul sağlanıyorsa 1, sağlamıyorsa 0 değerini alır. Mantıksalda ise; Sayı 0 ise YANLIŞ, sıfır değil(sıfır dışında bir sayı) ise DOĞRU değerini alır.
a=!6 /*a nin değeri nedir?*/ 6 sayısı sıfır dışı bir sayı olduğu için DOĞRU dur. Ancak “!” ile bunun tersi alınmıştır. Doğrunun tersi yanlıştır. Sonuç yanlış olacaktır.
Ödev 1 • b=10+4>5+!2; /*b nin değeri nedir?*/ İ1:!2 0 İ2:10+4 14 İ3:5+i1 5 İ4:i2>i3 1 İ5:b=i4 1 Sonuç 1 dir.
Ödev 2 • a=10; • b=!++a>10!=5; /*b nin değeri nedir?*/ • i1: ++a 11 • i2: !i1 0 • i3: i2>10 0 • i4: i3!=5 1 • i5: b=i4 1 • sonuç 1 dir.
Ve(and) - && operatörü • İlişkisel operatörlerin hepsinden düşük önceliklidir. Operandların ikisi doğru ise doğru(1) değerini, operandların bir tanesi yanlış ise yanlış değerini(0) alır. • a=4 && 0; /*a değeri 0 dir*/ • b=10 && -4 /*b değeri 1 dir*/ • c=0 && 0 /*c değeri 0 dir*/ • Yani bir operand 0 ise sonuç 0 dır.
ödevler • a=5; • b=!a>10&&fonk()==10; /*b nin değeri nedir?*/ • a=15; • x=a>=10&&a<=20; /*x nin değeri nedir?*/