Platform
Programlama

6. Operatörler - C++

Aritmetik işlemler, bileşik atama ve artırma.

resul · Editör, Yazar· 20 Ağustos 2026· 6 dk okuma

Operatör nedir

Operatör; matematiksel işlemler yapmak, iki değeri karşılaştırmak, değişkenlere değer atamak, koşullar oluşturmak gibi şeyler için çeşitli sembollere, ifadelere verilen isimdir.

En basit haliyle bir toplama işlemi yaparken:

cpp
#include <iostream>

int main() {
    int a{12};
    int b{5};

    int toplam{a + b};

    std::cout << "Toplam: " << toplam << '\n';

    return 0;
}

yapabiliriz. a değişkenine 12, b değişkenine 5 değerini verdik. toplam değişkenini de a ve b değerlerine bağımlı şekilde yazdık.
En nihayetinde de ekrana toplam değerini yazdırdık. Yani:

output
Toplam: 17

oldu.

Burada gördüğümüz + işareti tahmin edebileceğiniz üzere toplama anlamına geliyor ve buna toplama operatörü deniyor. Normalde int toplam = a + b şeklinde yazılırdı ancak biz int toplam{a + b} şeklinde yazdık. Bunun nedenini 3.derste öğrenmiştik.

Bu her ne kadar önemsiz gözükse de söyleyeceğim. Burada operatörün işlem yaptıklarına yani a ve b ye operand denir.

Bazı Operand Kullanımları

Bazı şeyler tek operand üzerinden değerlendirilebilir. Örneğin;

cpp
int sayi{10};
int sonuc{-sayi};

burada sayi için 10 değerini verdik. Daha sonra - yazarak bunun eksilisini sonuc değerine atadık. Bu değer -10 oldu. İkili operand kullanımı ise:

cpp
int a{7};
int b{3};
int sonuc{a * b};

şeklinde olabilir, sonuc değişkenine a ve b operandlarını çarparak verilen değeri atadık. Dolayısıyla sonuc 21 oldu. Koşul operatörü ise

cpp
#include <string>

int yas{20};
std::string durum{(yas >= 18) ? "Yetiskin" : "Cocuk"};

şeklindedir. Burada durum değişkeni koşullu bir şekilde değer alıyor. >= operatörü karşılaştırma operatörüdür. Eğer yas >= 18 şartı sağlanıyorsa durum değişkenine "Yetiskin" atanır. Eğer şart sağlanmıyorsa "Cocuk" atanır. Bu durumda yas değeri 18'den büyük olduğu için durum değişkenimiz "Yetiskin" değerini aldı.

Aritmetik Operatörler

OperatörAdıGöreviÖrnek
+toplamatoplarc = a + b
-çıkarmaçıkarıra = c - 4
*çarpmaçarparc = a * 8
/bölmebölerb = a / c
%mod almabölümünden kalanı bulura = 21 % 5
+artıönüne artı eklera = +a (etkisiz)
-eksiönüne eksi eklera = -a (işaret değişti)

toplama operatörü bazen iki metni birleştirmek için de kullanılır. Örneğin;

cpp
#include <iostream>
#include <string>

std::string ad{"Ali"};
std::string soyad{"Yilmaz"};

std::string tamAd{ad + " " + soyad};

std::cout << tamAd;
output
Ali Yilmaz

Diğer bazı örnekler:

cpp
int a{10 + 5}; // 15
int b{10 - 5}; // 5
int c{10 * 5}; // 50
cpp
int a{7 / 2};       // 3
double b{7.0 / 2};  // 3.5
double c{7 / 2};    // 3.0

burada gördüğünüz gibi int değeri tamsayı aldığı için ondalıklı kısmı kaldırdı. Ancak double değişkeninde korundu. Ancak önceki derslerde {} nin burada 3.5 değeri olamayacağından hata vermesini beklerdik diye düşünmüş olabilirsiniz.

Ancak burada bir daraltıcı söz konusu değil. Yani 7 sayısı da int, 2 sayısı da int ve ondalıklı atılınca kalan şey olan 3 de int. Önce tam sayı bölmesi yapılır ve yapılınca 3 kalır türü int olduğu için de problem teşkil etmez. Ancak eğer doğrudan int a{3.5}; deseydik elbette narrowing conversion hatasıyla yani daraltıcı dönüşüm ile karşılaşacaktık. Ya da int a{7.0 / 2}; yazsaydık oluşacak şey 3.5 değeri yani double değer olacak ve bize yine aynı derleme hatasını çıkaracaktı.

cpp
int a{3.0}; // Hata: daraltıcı dönüşüm
int b{3.0 + 0.0}; // Hata: sonuç double
int c{3}; // Geçerli

olacaktır.

% yani Kalan Operatörü ise tamsayı bölmesinden kalan değeri verecektir.

cpp
int a{10 % 3}; // 1
int b{12 % 4}; // 0
int c{-10 % 3}; // -1

Tek-çift kontrolü veya döngüler gibi şeyler için kullanılabilir. Mesela

cpp
int sayi{17};

if (sayi % 2 != 0) {
    // Sayı tek.
}

yada

cpp
#include <iostream>

int main(){

    int sayi{};
    std::cin >> sayi;

    if (sayi % 2 != 0) {
        std::cout << "Girdiginiz sayi tektir.";
    }
    else {
        std::cout << "Girdiginiz sayi cifttir.";
    }
    return 0;

}

gibi kontroller yapılabilir. Fonksiyonları bu iki operatörler dersinden sonra anlatacağım.

Bir de % operatörü noktalı türlerde kullanılamaz. Ayrıca payda sıfırsa davranış tanımsız olur (hata: undefined behavior). Bu / için de % için de geçerlidir.

Örnek

cpp
int a{5};
int b{2};
int tam{a / b};        // 2 — kesir atılır
double oran{5.0 / 2.0}; // 2.5
int kalan{a % b};      // 1

Örnek — süreyi saate ve dakikaya bölmek:

cpp
int dakika{130};
int saat{dakika / 60};           // 2
int kalan_dakika{dakika % 60};   // 10

Bileşik Atama Operatörleri

Bileşik atama operatörleri işlemi gerçekleştirip nesneyi değiştirmek için kullanılır. Mesela

cpp
int a{1};
int b{2};
a = a + b; // a = 3 oldu
cpp
int a{1};
int b{2};
a += b; // a = 3 oldu

yani a += b ve a = a + b aynıdır.

aynı şekilde

cpp
int a{5};
int b{3};
a = a - b; // a = 2 oldu

ve a -= b ve a = a - b aynı.

bir tablo yapacak olursak:

OperatörKarşılığıYanisi
+=a += ba = a + b
-=a -= ba = a - b
*=a *= ba = a * b
/=a /= ba = a / b
%=a %= ba = a % b

bit işaretleri var yine bileşik atamayla alakalı. Seriyi takip ediyorsanız şuan öğrenmenize gerek yok.

OperatörKarşılığıYanisi
&=a &= bbit için "ve"
|=a |= bbit için "veya"
^=a ^= bbit için dışlayıcı veya (XOR)
<<=a <<= bbiti sola kaydırma
>>=a >>= bbiti sağa kaydırma

++x ve x++

Bu operatörler, bir nesnenin değerini bir arttırmak ve azaltmak için kullanılır.

cpp
int sayi{8};

++sayi; // 9
--sayi; // 8

++x önce artırıyor, sonra değeri kullanıyor. x++ önce eski değeri veriyor, sonra artırıyor. Tek başına satırda x++; de çalışır. Fark, bu değeri başka bir değişkene veya ifadeye verdiğinde çıkar. O yüzden çoğu yerde ++x; yeter; x++i “eski değeri lazım” diye bilinçli kullan.
Örneğin

cpp
int a{5};
int x{++a}; // a = 6, x = 6

bu örnekte a arttırılıyor x'e değer veriliyor.

cpp
int b{5};
int y{b++}; // y = 5, b = 6

bu örnekte y'ye b'nin eski değeri verilir, sonra b artırılır.

Azaltma için de aynı şey geçerli.

Atama bir ifadedir

x = 5 hem atar hem o değeri üretir. Bu yüzden zincir kurulur:

cpp
int a{};
int b{};
b = a = 10; // önce a = 10, üretilen 10 b'ye gider. ikisi de 10

Sağdan sola işler. 10 önce a'ya, sonra aynı değer b'ye yazılır.

Koşulda if (x = 5) yazmak x'i 5 yapar; karşılaştırmak değildir. Eşitlik == ile sorulur. Bunu bir sonraki derste kullanacağız.

--İleride başka bi operatör dersi daha yazacağım.

Kaynaklar

Editör · Yazarresul
cppprogramlama