2.
4 Operatörler
Operatörler, değişkenler veya sabitler üzerinde matematiksel ve karşılaştırma işlemlerini yapan
simgelerdir.
2.4.1 Aritmetik Operatörler
Operatör İşlem
+ Toplama
- Çıkarma
* Çarpma
/ Bölme
% Mod
Öncelik sırası: (*, /, %), (+, -). Öncelik sırası aynı olan operatörlerden işlem sırası soldan sağa
doğrudur.
Örnek:
char c;
int i, j;
float w, x;
c = ‘R’; /* ASCII kodu 82 */
i = 76;
w = 10f;
j = i * i; /* j, 76*76 = 5776 olarak atanır. */
j = i * c; /* j, 76*82 = 6232 olarak atanır. */
j = i / w; /* i integer ve w float olduğundan, i / w işleminin sonucu float olur. 76/10.0 = 7.6
Ancak işlemin sonucu integer değişkenine atanacağı için, ondalık kısım
atılır ve i 7 olarak atanır. */
x = i / w; /* x, 7.6 olarak atanır. */
j = i % 10; /* i, (76 mod 10) = 6 olarak atanır. */
2.4.2 Atama Operatörler
Operatör Açıklama Örnek Anlamı
= atama x = 7; x = 7;
+= ekleyerek atama x += 3 x=x+3
-= eksilterek atama x -= 5 x=x-5
*= çarparak atama x *= 4 x=x*4
/= bölerek atama X /= 2 x=x/2
%= bölüp, kalanını atama x %= 9 x=x%9
++ bir arttırma x++ veya ++x x=x+1
-- bir azaltma x-- veya --x x=x-1
C Ders Notları – Prof. Dr. Hasan OCAK 8
Örnek:
int i=3, j, k;
float x, y, z;
j = 5;
x = 4.8;
y = 58.25;
k = j * i; /* k 15 olarak atanır. */
k = x / i; /* k integer olarak tanımlandığı için (ondalık kısım atılır) 1 olarak atanır. */
z = x / i; /* z float olarak tanımlandığı için 1.6 olarak atanır. */
k = j % i * 4; /* İşlem önceliği soldaki % operatörünündür. k 8 olarak atanır. */
i += j; /* (i = i + j) i 8 olarak atanır. */
i ++; /* (i = i + 1) i 9 olarak atanır. */
--j; /* (j = j - 1) j 4 olarak atanır. */
2.4.3 Karşılaştırma ve Mantıksal Operatörler
Operatör Açıklama Örnek Anlamı
> büyüktür x>y x, y’den büyük mü?
< küçüktür x<y x, y’den küçük mü?
== eşittir x == y x, y’ye eşit mi?
>= büyük-eşittir x >= y x, y’den büyük yada eşit mi?
<= küçük-eşittir x <= y x, y’den küçük yada eşit mi?
!= eşit değil x != y x, y’den farklı mı?
&& VE x > 2 && x < y x 2’den büyük VE y’den küçük mü?
|| VEYA x > 2 || x < y x 2’den büyük VEYA y’den küçük mü?
! DEĞİL !x x yanlış mı?
Not: C dilinde diğer bazı dillerde olduğu gibi TRUE ve FALSE için özel bir veri tipi
tanımlanmamıştır. C dilinde FALSE 0 sayısı, TRUE ise sıfırdan farklı herhangi bir sayı ile temsil
edilmektedir.
Örnek: x’in 1, y’nin 4 ve z’nin de 14 olduğunu varsayalım.
x<y+z 1 (True)
y == 2 * x + 3 0 (False)
z >= x + y 1 (True)
x != y 1 (True)
x <= 1 && y == 3 0 (False)
x <= 1 || y == 3 1 (True)
!(x > 1) 1 (True)
!x > 1 0 (False)
! (x <= 1 && y == 3) 1 (True)
Not: C dilinde x = y ifadesinin değeri x’e atanan değere eşittir. Bundan dolayı, x = y = z = k
ifadesi legaldir ve bu atama işlemi sonucunda x, y ve z’nin değerleri k olarak atanır.
C Ders Notları – Prof. Dr. Hasan OCAK 9
Örnek: x’in 1 ve y’nin de 4 olduğunu varsayalım.
y == (x = 3) + 1 1 (True) (x = 3 ifadesi 3’e eşittir.)
x <= 1 && y = 3 1 (True) (y = 3 ifadesi 3’e, dolayısıyla TRUE’ya eşittir.)
x <= 1 && y == 3 0 (False) (y == 3 ifadesi y 4 olduğundan FALSE’a eşittir.)
Not: Atama operatörü (=) karşılaştırma operatörü (==) ile karıştırılmamalıdır.
Örnek:
if (x = 3)
printf(“True”);
else
printf(“False”);
x’in değeri ne olursa olsun, yukarıdaki kod sonucunda x’e 3 değeri atanır ve daima if deyiminin
birinci kısmı çalışır.
2.4.4 Bit Düzeyinde İşlem Yapılan Operatörler
Operatör Açıklama Örnek Sonuç
& ve 10 & 25 (00001010 & 00011001) = (00001000) = 8
| veya 10 | 25 (00001010 | 00011001) = (00011011) = 27
^ özel veya (xor) 10 ^ 25 (00001010 ^ 00011001) = (00010011) = 19
~ değil ~10 not(00001010) = (11110101) = 245
>> sağa kaydırma 12 >> 3 (00001100 >> 3) = (00000001) = 1 (= 12/23)
<< sola kaydırma 12 << 3 (00001100 << 3) = (01100000) = 96 (= 12*23)
Not: && ve || operatörleri, bit düzeyinde işlem yapan & ve | operatörleri ile karıştırılmamalıdır.
2.5 Giriş/Çıkış (Input/Output) Fonksiyonları
Temel giriş/çıkış fonksiyonları kullanılırken stdio.h başlık dosyası programın başına
eklenmelidir.
2.5.1 printf() Fonksiyonu
printf() fonksiyonu, değişkenlerin içeriğini veya bir mesajı ekrana belirlenen bir formata göre
yazdırmak için kullanılır. Kullanım biçimi:
printf(format, <parametreler>)
Format 3 kısımdan oluşur.
Düz metin (literal string): Yazdırılmak istenen ileti.
Konrol karakterleri (escape squence): Değişkenlerin ve sabitlerin nasıl yazılacağını belirtmek
ve imlecin alt satıra geçirilmesi gibi bazı basit işlemlerin gerçekleştirilmesi için kullanılır.
C Ders Notları – Prof. Dr. Hasan OCAK 10
Tip belirleyici (conversion specifier): % işaretinden oluşur. Ekrana yazdırılmak istenen
değişkenin tipi, % işaretinden sonra belirtilir.
Kontrol Karakterleri
Karakter Anlamı
\a Ses üretir (Alert)
\b İmleci bir sola kaydır (Backspace)
\f Sayfa atla. Bir sonraki sayfanın başına geç (Form feed)
\n Bir alt satıra geç (Newline)
\t Yatay TAB (Horizontal Tab)
\v Dikey TAB (Vertical Tab)
\" Çift tırnak karakterini ekrana yaz
\' Tek tırnak karakterini ekrana yaz
\\ \ karakterini ekrana yaz
Tip Karakterleri
Karakter Anlamı Tip
%c Tek bir karakter char
%d İşaretli ondalık tamsayı int, short
%ld Uzun işaretli ondalık tamsayı long
%u İşaretsiz ondalık tamsayı unsigned int, unsigned short
%f Gerçel sayı float, double
%s Karakter dizisi (string) char
%lu İşaretsiz uzun tamsayı unsigned long
Örnek:
int x = 5;
float pi = 3.14;
char ch = 'A';
printf("x = %d\tpi = %f\tch = %c\n", x, pi, ch);
Ekran çıktısı:
x = 5 pi = 3.140000 ch = A
Örnek:
int x = 5;
double y = 3.0;
printf("x = %d\n", x);
printf("y = %f \n", y);
printf("x * y = %f\n", x * y);
C Ders Notları – Prof. Dr. Hasan OCAK 11
Ekran çıktısı:
x=5
y = 3.000000
x * y = 15.000000
2.5.2 scanf() Fonksiyonu
scanf() fonksiyonu klavyeden veri okumak için kullanılan bir fonksiyondur. printf() gibi scanf()
fonksiyonu da yukarıdaki tablolarda verilen kontrol ve tip karakterlerini kullanır. Kullanım
biçimi:
scanf(format, <değisken adresleri>)
scanf() fonksiyonu hiçbir değişkene değer atanmamış ise 0, aksi taktirde başarılı bir şekilde
değer atanan değişken sayısına döner.
Örnek: Kullanıcının klavyeden gireceği iki sayının çarpımını bulan bir program yazalım.
#include <stdio.h>
main()
{
float x, y, z;
printf("Lutfen iki tane sayi giriniz: ");
scanf("%f%f",&x, &y);
z = x * y;
printf("\nGirilen iki sayinin carpimi: %f", z);
}
Not: Parametreler kısmına değişkenin ismi değil, & (adres) operatörü kullanılarak değişkenin
adresi girilmelidir.
Yukarıdaki programda sayılar klavyeden,
10 1.25
yada
10 1.25
veya
10
1.25
gibi farklı şekillerde girilebilir.
2.5.3 puts() Fonksiyonu
puts() fonksiyonu verilen bir string’i ekrana yazar ve imleci alt satıra geçirir. Daha önce verilen
kontrol karakterleri ile beraber kullanılabilir.
Örnek: puts(“MKT104 – Bilgisayar Programlama”)
C Ders Notları – Prof. Dr. Hasan OCAK 12
2.5.4 gets() Fonksiyonu
gets() fonksiyonu klavyeden, yeni satır karakteriyle karşılaşıncaya kadar, karakter topluluğu
(string) okumak için kullanılır.
Örnek:
char str[20];
puts("Bir şeyler yazın:");
gets(str);
2.5.5 getchar() Fonksiyonu
Klavyeden bir karakter okumak için kullanılır. getchar() kullanılarak, program istenen bir yerde
durdurulup, bir karakter girinceye kadar bekletilebilir.
2.5.6 Formatlı Çıktı
printf() fonksiyonu ile ekrana yazdırılan çıkışın formatı kullanıcı tarafından aşağıdaki gibi
değiştirilebilir.
Tamsayılar: %d yerine %wd
Gerçek sayılar: %f yerine %[Link]
String: %s yerine %ws
w: Yazılacak olan sayının ya da string’in alan genişliği.
k: Gerçek sayılar için virgülden sonra kaç basamak yazılacağı.
Örnek:
int i = 10, j = 150;
printf("%d %d\n", i, j);
printf("%5d %7d\n", i, j);
Ekran çıktısı:
10-150
---10-----150
Not: - karakterleri boşlukları belirtmek için kullanılmıştır. Bu karakterler ekran çıktısında
mevcut değildir.
C Ders Notları – Prof. Dr. Hasan OCAK 13
Örnek:
double x = 125.2498;
printf("%f\n", x);
printf("%10.3f\n", x);
Ekran çıktısı:
125.249800
- - -125.250
C Ders Notları – Prof. Dr. Hasan OCAK 14