C Operatörleri

## Önemli bir iki husus

1. Atama operatörleri bile dahil olmak üzere hepsi bir değer döndürür. Bu değer sonraki satırda bir yere atanmaz ya da işleme taabi tutulmazsa kaybolur.
2. Her değişken ile her değişken işleme giremez. Eğer uyumsuz iki değişken ile işlem yapmaya çalışılırsa kod derlenemez ve hata verir.
3. Operatörlerin öncelikleri vardır. (Çarpma toplamadan önce hesaplanır mesela). Bu listeyi en altta bulabilirsiniz.

## Aritmetik İşlemler

### + (sayı işareti)

C'nin tarihsel gelişim sürecinde ortaya çıkmış bu işaret günümüzde neredeyse hiçbir işe yaramamaktadır. Önüne geldiğinin değerini verir. Yani pozitif sayılar pozitif, negatifler de negatif çıkar.

```
+ a

```

a gelir

```
+( + a ) )

```

a gelir

```
+ (-3) )

```

-3 gelir

#### Garip Özellikler

Eğer short bir değerin önüne + işareti gelirse, bu işlem işlendikten sonra o değerin boyutu int'inkine yükseltilir. Eğer ki bir değişkene bağlıysa değişkende değişiklik olmaz.

```
short int lol=0;
printf("%d " ,sizeof(lol));
printf("%d ",sizeof(+lol));
printf("%d",sizeof(lol));

```

Çıktı:

```
1 4 1

```

### - (sayı işareti)

Bu işaret ardında bulunan ifadeyi negatife çevirir.

```
-(3)

```

-3 gelir

```
-(-3)

```

3 gelir

```
-(a)

```

-a gelir

### + (toplama)

Bu işaret iki değerin toplamını döndürür.

```
a+b

```

a ile b'nin toplamı gelir

```
1+2

```

3 gelir

```
1+1.0

```

2.0 gelir (Bu değerin boyutu double boyutudur. Zira 1.0 çoğu derleyicide double boyutundaymış gibi değerlendirilir)

```
34+22.5

```

76.5 gelir

### - (çıkarma)

Bu işaret iki değerin farkını döndürür.

```
a-b

```

a ile b'nin farkı gelir

```
3-(-5)

```

8 gelir

```
12-0.8

```

11.2 gelir (toplamadaki gibi değerin boyutu double boyutu olacak biçimde genişletilir)

### \* (çarpma)

Bu işaret iki değerin çarpımını döndürür.

```
a*b

```

a ile b'nin çarpımı gelir

```
4*5

```

20 gelir

```
3*-6

```

-18 gelir

```
2.0*0.5

```

1.0 gelir (değerin boyutu double boyutudur)

### /

Bu işaret iki sayının bölümünün değişken türünün boyutuna sığacak kadar uzun kısmını döndürür. (Yani tam sayılar arasındaysa bölümün tam kısmı, float cinslerinden biriyse bölüm float boyutunu aşmadıkça basamakları hesaplanır.)

```
a/b

```

a'nın b'ye bölümü gelir

```
4/2

```

2 gelir

```
5/2

```

2 gelir (bölüm 2.5 ancak tam sayı kısmı 2)

```
1/1.2

```

0.833... gelir. (bölüm double boyutu aşılasıya hesaplanır, NOT: printf ile basılacak olsa float tipi değerlerin virgülden sonraki ilk 6 basamağı basılır. Bu diğerlerinin kaybolduğu anlamına gelmez. Bunları basabilmek istiyorsanız ÇIKTI FORMATI LİNKİNİ BURAYA KOYMAYI UNUTMA)

```
3/0

```

ÇALIŞMA ESNASINDA HATA

### %

İlk gelen sayının ikincisine bölününce vereceği kalanı döndürür.

```
a%b

```

a/b işleminin kalanını verir

```
5%3

```

2 gelir

```
1701%4

```

1 gelir

```
231722%1

```

0 gelir (hatta her şeyin birden kalanı sıfırdır)

```
23%0

```

ÇALIŞMA ESNASINDA HATA

## Kıyas Operatörleri

>

>=

==

!=

<=

<

## Mantık Operatörleri

&&

!

## Bit Operatörleri

Atama Operatörleri

sizeof

üçlü koşul

\*(işaretçi)

&

### ++ ve --

Bu özel atama operatörleri belli bir değişkenin değerini bir azaltır ya da arttırır.

#### ++ (ön)

Değişkenin önüne gelen ++ onu o anda arttırır.

```
a++

```

a'nın yeni değeri bir önceki değerinin bir fazlasıdır.

```
int a=3;
printf("%d ",++a);
printf("%d",a);

```

Çıktı:

```
4 4

```

```
3++

```

DERLEME ZAMANI HATASI

```
int a=3;
int b=a+(a++);
int c=(a++)+a;
printf("%d,%d,%d",a,b,c);

```

Çıktı:

```
5,8,10

```

#### -- (arka)

###