Bilgisayar Programlama/C/İşleçler
Eğitim seviyesi Bu öğrenim kaynağı yükseköğrenim (üniversite) seviyesindedir. |
Bu maddede C dilinde kullanılan altı farklı işleç ele alınacaktır.
Aritmetik İşleçler
[edit]İşleç | İşlevi | Örnek |
---|---|---|
+ | Toplama | x + y |
- | Çıkarma | x - y |
* | Çarpma | x * y |
/ | Bölme | x / y |
% | Kalanı bulma | x % y |
++ | Değişken değerini 1 artırma | ++x |
-- | Değişken değerini 1 azaltma | --x |
Örnek:
#include <stdio.h> int main() { int x = 20, y = 10, z = x + y; printf("%d", z); /* 30 yazmalı */ printf("\n%d", x - y); /* 10 yazmalı */ printf("\n%d", x * y); /* 200 yazmalı */ printf("\n%d", x / y); /* 2 yazmalı */ x = ++x; /* x'in değerini 1 artırır */ printf("\n%d", x % y); /* 1 yazmalı */ printf("\n%d", x); /* 21 yazmalı */ y = --y; /* y'nin değerini 1 azaltır */ printf("\n%d", y); /* 9 yazmalı */ return 0; }
Dönüş:
30 10 200 2 1 21 9
Aritmetik işleçli değerler ister bağımsız bir değişken olarak atanabilir (toplama örneğinde olduğu gibi), ister ekrana direkt olarak yazdırılabilir (çıkarma ve çarpma örneklerinde olduğu gibi).
Binary (İkili Değer) İşleçleri
[edit]Bit düzeyinde (bitwise) işleçler olarak da bilinir, binary (0 ve 1) sayıları ile işlem yapar.
İşaret | İşlev | Örnek | x=0, y=0 | x=0, y=1 | x=1, y=0 | x=1, y=1 |
---|---|---|---|---|---|---|
& | AND | x & y | 0 | 0 | 0 | 1 |
| | OR | x | y | 0 | 1 | 1 | 1 |
^ | XOR | x ^ y | 0 | 1 | 1 | 0 |
~ | NOT | ~a | Dönüşü 0 ve 1'lerin tam tersidir. Örn: ~7 (00000111) = 11111000 | |||
<< | Bitleri sola kaydırır. | x << y | Örn: 5 << 3 (00000101) = 00101000 (3 basamak sola) | |||
>> | Bitleri sağa kaydırır. | x >> y | Örn: 6 >> 2 (00000110) = 00000001 (2 basamak sağa) |
Örnek:
#include <stdio.h> int main() { char x = 7, y = 9; /* binary değerleri 00000111 ve 00001001 */ printf("%d\n", x & y); /* dönüşü 00000001, decimal 1 */ printf("%d\n", x | y); /* dönüşü 00001111, decimal 15 */ printf("%d\n", x ^ y); /* dönüşü 00001110, decimal 14 */ printf("%d, %d\n", ~x, ~y); /* dönüşü 11111000, 11110110, decimal -8, -10 */ printf("%d\n", x << 2); /* dönüşü 00011100, decimal 28 */ printf("%d\n", y >> 2); /* dönüşü 00000010, decimal 2 */ return 0; }
Dönüş:
1 15 14 -8, -10 28 2
NOT: Yukarıda binary dönüşümleri yapılan bu değerlerin dönüşü ondalık (decimal) formatta olacaktır, örn: 00000100 = 4 olarak dönecek
Atama İşleçleri
[edit]İşleç | İşlevi | Örnek | Eşdeğeri |
---|---|---|---|
= | Sayıya eşittir | x = y | x = y |
+= | Sayıya ekler | x += y | x = x + y |
-= | Sayıdan çıkarır | x -= y | x = x - y |
*= | Sayıyı çarpar | x *= y | x = x * y |
/= | Sayıyı böler | x /= y | x = x / y |
%= | Sayının kalanını alır | x %= y | x = x % y |
&= | Binary AND işleci | x &= y | x = x & y |
|= | Binary OR işleci | x |= y | x = x | y |
^= | Binary XOR işleci | x ^= y | x = x ^ y |
<<= | Binary sola kaydırma işleci | x <<= y | x = x << y |
>>= | Binary sağa kaydırma işleci | x >>= y | x = x >> y |
Değişkene yeni değer atamak için yukarıdaki örneklerde olduğu gibi x = x + y şeklinde yazmak yerine kısaca x += y yazılabilir.
Örnek:
#include <stdio.h> int main() { int x = 3; x += 7; /* x'in değerini 7 artırır */ printf("%d\n", x); /* 10 */ x -= 5; /* x'in değerini 5 eksiltir */ printf("%d\n", x); /* 5 */ x *= 3; /* x'in değerini 3 ile çarpar */ printf("%d\n", x); /* 15 */ x /= 5; /* x'in değerini 5'e böler */ printf("%d\n", x); /* 3 */ x %= 2; /* x'in 2'ye bölümünden kalanını alır */ printf("%d\n", x); /* 1 */ x &= 3; /* binary olarak x'in şimdiki değeri (1) ile 3'ün AND'i (00000001 & 00000011) */ printf("%d\n", x); /* 00000001 yani 1 */ x |= 2; /* binary olarak x'in şimdiki değeri (1) ile 2'nin OR'u (00000001 | 00000010) */ printf("%d\n", x); /* 00000011 yani 3 */ x ^= 5; /* binary olarak x'in şimdiki değeri (3) ile 5'in XOR'u (00000011 ^ 00000101) */ printf("%d\n", x); /* 00000110 yani 6 */ x <<= 3; /* x'in binary değerinin (00000110) bitlerini 3 basamak sola kaydırır */ printf("%d\n", x); /* 00110000 yani 48 */ x >>= 2; /* x'in binary değerinin (00110000) bitlerini 2 basamak sağa kaydırır */ printf("%d\n", x); /* 00001100 yani 12 */ return 0; }
Dönüş:
10 5 15 3 1 1 3 6 48 12
Karşılaştırma İşleçleri
[edit]İşleç | İşlevi | Örnek |
---|---|---|
== | Eşittir | x == y |
!= | Eşit değildir | x != y |
> | Büyüktür | x > y |
< | Küçüktür | x < y |
>= | Büyük veya eşittir | x >= y |
<= | Küçük veya eşittir | x <= y |
Dönüşü boolean (true & false) türünde olacaktır; doğru ise 1 (true), yanlış ise 0 (false) yazacaktır.
Örnek:
#include <stdio.h> int main() { int x = 4, y = 6; printf("%d\n", x == y); /* false, 0 yazmalı */ printf("%d\n", x != y); /* true, 1 yazmalı */ printf("%d\n", x > y); /* false, 0 yazmalı */ printf("%d\n", x < y); /* true, 1 yazmalı */ printf("%d\n", x >= y); /* false, 0 yazmalı */ printf("%d\n", x <= y); /* true, 1 yazmalı */ return 0; }
Dönüş:
0 1 0 1 0 1
> (büyüktür) ve >= (büyük veya eşittir) işleçleri arasındaki fark, iki sayı eşit ise > işleci 0, >= işleci ise 1 olarak dönecektir. Aynı kural < (küçüktür) ve <= (küçük veya eşittir) işleçleri için de geçerlidir.
Lojik (Mantıksal) İşleçler
[edit]İşleç | İsmi | İşlevi | Örnek |
---|---|---|---|
&& | Mantıksal AND | Tüm koşullar doğru ise dönüşü 1'dir. | x < y && y > z |
|| | Mantıksal OR | Koşulların biri veya birkaçı doğru ise dönüşü 1'dir. | x > z || x = y |
! | Mantıksal NOT | Dönüşü tersine çevirir; 1 olarak dönen kodlar 0 olarak dönecektir. | !(x < z && x > y) |
Örnek:
#include <stdio.h> int main() { int x = 5, y = 8; printf("%d", x < y && y == 8) /* x'in değeri y'den küçük (DOĞRU) ve y'nin değeri 8'e eşit (DOĞRU), AND işleci olduğu için 1 yazacaktır */ printf("%d", x > 7 || y > 7) /* x'in değeri 7'den büyüktür (YANLIŞ) ve y'nin değeri 7'den büyüktür (DOĞRU), OR işleci olduğu için 1 olarak dönecektir */ printf("%d", !(x > 2 && y > x)) /* x'in değeri 2'den büyüktür (DOĞRU) ve y'nin değeri x'ten büyüktür (DOĞRU), AND işleci olduğu için 1 olarak dönecek fakat başında ! (NOT) işleci olduğu için 0 yazacaktır */ }
Dönüş:
1 1 0
"sizeof" İşleci
[edit]Değişkenlerin bellekteki boyutunu byte cinsinden verir. Ekrana yazdırmak için %lu ifadesi kullanılır.
Örnek:
#include <stdio.h> int main() { int IntDegeri; char CharDegeri; floar FloatDegeri; printf("%lu\n", sizeof(IntDegeri)); /* normal int değişkeni boyutu 4 byte'dır */ printf("%lu\n", sizeof(CharDegeri)); /* normal char değişkeni boyutu 1 byte'dır */ printf("%lu\n", sizeof(FloatDegeri)); /* normal float değişkeni boyutu 4 byte'dır */ return 0; }
Dönüş:
4 1 4