Aritmetik İşlemler

C öncelikle günlük hayatta da kullandığımız dört işlemi yapabilmektedir. Bunlar için kullanılan operatörler şunlardır:

+ : Toplama
- : Çıkarma
* : Çarpma
/ : Bölme

Bir tam sayı başka bir sayıya bölündüğü zaman sonuç yine tam sayı olacak, kalan atılacaktır. Kalanı bulmak için % operatörü kullanılır.

#include <stdio.h>

int main(void){
    short int a=5;
    short int b,c;
    b=a/2;
    c=a%2;
    printf("%hd\n",b);
    printf("%hd",c);
    return 0;
}

Yukarıdaki kodun çıktısı şu olacaktır:

2
1

% işlemi küsuratlı sayılarda kullanılamaz. Ayrıca bir tam sayıyı başka bir tam sayıya bölmenin sonucunda çıkacak sonuç float tipine atanacak olsa bile yine de kalan atılarak işlem yapılır.

#include <stdio.h>

int main(void){
    float a=5/2;
    printf("%f",a);
    return 0;
}

Bu işlemin sonucu şu olacaktır:

2.000000

Çünkü önce tam sayılar arasında işlem yapılmış, 2 sonucu bulunmuş ve sonrasında 2 tam sayısı küsuratlı sayıya dönüştürülmüştür. Örnek şu şekilde yapılsaydı:

#include <stdio.h>

int main(void){
    float a=5.0f/2;
    printf("%f",a);
    return 0;
}

Bu durumda çıktı şu olacaktı:

2.500000

Çünkü bu durumda 5 sayısı küsuratlı olarak tanımlanmıştır ve sonrasında 2'ye bölünmüştür. Bunun sonucunda küsuratlı sayı olan 2.5 bulunmuştur.


Arttırma ve Azaltma İşlemleri

Bir değişkenin değerini 1 arttırma ve 1 azaltma işlemleri sırasıyla ++ ve -- operatörleriyle yapılabilir. Bu operatörler değişkenin başına da sonuna da konulabilir. Fakat bu iki durum arasında küçük bir fark vardır. Bu fark bu operatörlerin kullanıldıkları değişkenlerin bir ifadenin içinde yer alması durumunda görülür. Eğer bu operatörler değişkenden önce gelirse ilk olarak değişkenin değeri arttırılır veya azaltılır sonra ifadede belirtilen işlem yapılır. Aksi durumda önce ifadenin içindeki işlem yapılır ve sonra değişkenin değeri arttırılır.

Bu konuda iki küçük örnek yapalım:

#include <stdio.h>

int main(void){
    int a=5;
    int b=++a;
    printf("%d\n",a);
    printf("%d",b);
    return 0;
}

#include <stdio.h>

int main(void){
    int a=5;
    int b=a++;
    printf("%d\n",a);
    printf("%d",b);
    return 0;
}



İlk olarak yukarıdaki iki kod parçasına bakalım. İlkinde a değişkeninin değeri ilk başta 5'tir. Bir alt satırda "b=++a" ifadesi görülmektedir. Bu durumda önce a'nın değeri bir arttırılmış daha sonra a'nın değeri b'ye atanmıştır. Daha sonra sırayla a ve b'nin değerlerini yazdırdığımızda çıktı şu şekilde olacaktır:

6
6

İkinci kod parçasında ise b'ye a'nın değeri "b=a++" şeklinde atanmıştır. Bu durumda önce a'nın değeri b'ye atanacak daha sonra a'nın değeri arttırılacaktır. Çıktımız bu sefer şu olacaktır:

6
5

#include <stdio.h>

int main(void){
    int a=5;
    int b=++a*5;
    printf("%d",b);
    return 0;
}

#include <stdio.h>

int main(void){
    int a=5;
    int b=a++*5;
    printf("%d",b);
    return 0;
}

Şimdi yukarıdaki iki örneğe bakalım. İlkinde "b=++a*b" ifadesi bulunmaktadır. Bu şu demektir. Önce a'nın değeri arttırılacak, daha sonra "a*5" işlemi yapılacak ve ardından bu değer b'ye atanacaktır. Bu durumda b'nin değerini yazdırdığımızda 30 değeri ile karşılaşırız.

İkinci kod parçasında ise "b=a++*b" ifadesi görülmektedir. Bu da şu demektir. Önce "a*5" işlemi yapılacak, daha sonra bu değer b'ye atanacak ve en son olarak da a'nın değeri arttırılacaktır. Bu durumda b'nin değerini yazdırdığımızda ise 25 değeri ile karşılaşırız.


Öncelik Sırası

Bir ifadede birden fazla işlem yapıldığında öncelik sırası yüksekten alçağa şu şekildedir:

(++),(--)
Sayıyı negatif yapmak için kullanılan (-)
(*), (/), (%)
(+),(-)

Aynı işlem önceliğine sahip işlemlerden solda olan daha önce yapılır. Parantez kullanımıyla istenen işlemin önce yapılması sağlanabilir.