operatörler aslında birer fonksiyondur. Sentetik şeker gibi davranırlar. 2 tane tam sayının arasında bulunan + bir operatördür. Arka plana bakarsak bu 2 sayı alan bir fonksiyondan başka bir şey değildir.
Assignment Operator =
Sağ taraftaki değeri sol taraftaki değişkene atar.
int a, x, y, z;
a = 5;
x = y = z = 4;
cout << a << endl;
cout << x << ", " << y << ", " << z << ", " << endl;
// 5
// 4, 4, 4,Arithmetic Operators +, -, *, /, %
Temel matematiksel işlemleri bu operatörlerle yapıyoruz.
- İşlemin hassasiyeti değişkenin hassasiyetine bağlıdır. Örneğin gerçek hayatta 7/3 = 2.33… iken integer tipinde değişkenle yaparsanız size 2 sonucu verecektir. Çünkü
int main() {
int a, b, c;
a = 5; b = 7; c = 3;
cout << "a = 5; b = 7; c = 3;" << endl;
cout << "a + b = " << (a + b) << endl;
cout << "a - b = " << (a - b) << endl;
cout << "a * b = " << (a * b) << endl;
cout << "b / c = " << (b / c) << endl;
cout << "b % c = " << (b % c) << endl;
}Compound assignment
Atama operatörüyle aritmetik operatörlerin birleştirilmiş halidir.
| expression | equivalent to… |
|---|---|
y += x; | y = y + x; |
x -= 5; | x = x - 5; |
x /= y; | x = x / y; |
price *= units + 1; | price = price * (units+1); |
Increment and decrement (++, –)
Artırma, azaltma operatörleri. Değişkenin önüne veya arkasına yazılabilir. Eğer önüne yazarsak prefix, arkasına yazarsak postfix diye geçer. Değeri 1 artırır/azaltır.
int i = 0;
i++; // 1
i--; // 0prefix ile postfix arasındaki fark ise, prefixde değişkenin değeri öncelikle bir artırılır sonra kullanılacak yer varsa yeni değeri ile kullanılır. Postfix de ise öncelikle değişken kullanılır sonra da değeri artırılır:
#include <iostream>
using namespace std;
int main() {
int i = 0, j = 0;
cout << "i " << i << "\t";
cout << "j " << j << endl;
cout << "i++ " << i++ << "\t";
cout << "++j " << ++j << endl;
cout << "i++ " << i++ << "\t";
cout << "++j " << ++j << endl;
}
// i 0 j 0
// i++ 0 ++j 1
// i++ 1 ++j 2Relational and comparison operators ( ==, !=, >, <, >=, <= )
Sağdaki ve soldaki değeri karşılaştırıp mantıksal(boolean) bir değer döndürür.
#include <iostream>
using namespace std;
int main() {
int a, b, c;
a = 5; b = 3; c = 5;
cout
<< "a: " << a << "\t"
<< "b: " << b << "\t"
<< "c: " << c << endl << endl;
cout
<< "(a > b) \t" << (a > b) << endl
<< "(a < b) \t" << (a < b) << endl
<< "(a == b) \t" << (a == b) << endl
<< "(a != b) \t" << (a != b) << endl
<< "(a == c) \t" << (a == c) << endl
<< "(a != c) \t" << (a != c) << endl
<< "(a <= c) \t" << (a <= c) << endl
<< "(a >= c) \t" << (a >= c) << endl
<< "(a <= b) \t" << (a <= b) << endl
<< "(a >= b) \t" << (a >= b) << endl;
}
// a: 5 b : 3 c : 5
//
// (a > b) 1
// (a < b) 0
// (a == b) 0
// (a != b) 1
// (a == c) 1
// (a != c) 0
// (a <= c) 1
// (a >= c) 1
// (a <= b) 0
// (a >= b) 1Logical operators ( !, &&, || )
Mantıksal değerler arasında karşılaştırma yaparlar.
&& and anlamına gelir. Eğer her iki ifade ancak ve ancak doğru ise doğru diğer tüm koşullarda yanlış döndürür.
|| or anlamına gelir. Eğer her iki ifadeden en az bir tanesi doğru ise doğru döndürür; eğer her iki ifadede yanlış ise yanlış döndürür.
! not anlamına gelir ve başına geldiği ifadenin değilini alır. Yani doğru ise yanlış; yanlış ise doğru yapar.

#include <iostream>
using namespace std;
int main() {
cout << "! NOT operator: \n";
cout
<< "true \t" << (true) << endl
<< "!true \t" << (!true) << endl;
cout << "\n\n&& AND operator: \n";
cout
<< "true && true \t" << (true && true) << endl
<< "true && false \t" << (true && false) << endl
<< "false && true \t" << (false && true) << endl
<< "false && false \t" << (false && false) << endl;
cout << "\n\n|| OR operator: \n";
cout
<< "true || true \t" << (true || true) << endl
<< "true || false \t" << (true || false) << endl
<< "false || true \t" << (false || true) << endl
<< "false || false \t" << (false || false) << endl;
}
// !NOT operator:
// true 1
// !true 0
//
//
// && AND operator :
// true && true 1
// true && false 0
// false && true 0
// false && false 0
//
//
// || OR operator:
// true || true 1
// true || false 1
// false || true 1
// false || false 0short-circuit evaluation
&& ve || operatörlerinin solundaki ifade (ilk ifade) eğer mantıksal sonucu vermek için yeterli ise sağındaki ifadeye bakılmaz/çalıştırılmaz.
Örneğin false && true VEYA false && false gelmesi durumunda && operatörü false değerini döndürecek. Yani aslında sağdaki ifadenin
#include <iostream>
using namespace std;
bool f() {
cout << "f fonksiyonu calisti" << endl;
return true;
}
int main() {
cout << "Eger ilk ifade false olursa: " << endl;
cout << (false && f()) << endl << endl;
cout << "Eger ilk ifade true olursa: " << endl;
cout << (true && f()) << endl;
}
// Eger ilk ifade false olursa:
// 0
//
// Eger ilk ifade true olursa :
// f fonksiyonu calisti
// 1aynı durum || ifadesi için de geçerli. Eğer ilk ifade true ise her zaman true döneceği için ikinci ifade çalışmaz/bakılmaz.
Conditional ternary operator ( ? )
if, else bloğunun kısaltılmış halidir. koşul ? doğru gelmesi durumu : yanlış gelmesi durumu
şeklinde çalışır.
bool b = true;
cout << (b ? "dogru" : "yanlis") << endl;Comma operator ( , )
Tek bir ifadenin yazılabileceği yerlere birden fazla ifade yazmak için kullanırız. İfadeler soldan sağa doğru çalışır ve en sağdaki ifade return eder.
int a = 5, b = 20;
cout << (++a, ++b) << endl;
cout << "a: " << a << "\tb: " << b << endl;
// 21
// a: 6 b: 21

Leave a Reply