PROGRAMLAMA : C PROGRAMLAMA |
( berna.sulu@linuxprompt.com ) |
Giriş |
Günümüzde programlama dillerinin tahmini sayısının 1500 olduğu bilinmekte. Bu kadar çok yazılım dili olmasına rağmen belli diller hiçbir zaman popülerliğini yitirmemiştir. Bunların başında c, c++, assembly gibi köklü dillerin yanısıra günümüzün internet dünyasına uyum sağlayan yazılımda kolaylık sağlayan php, c# , asp, java gibi yenileri de eklenmiştir. Fakat yine de köklü dillerin tahtı 1960 lı yıllardan beri sarsılmamıştır.
C gibi dilleri popüler kılan unsurlara ileride deyineceğiz ama öncesinde bu dökümanın yazım amacını belirlemekte fayda var. Bir programcıya sizce hangi programlama dilinden başlamamalıyım sorusunu yönelttiğinizde genelde cevap o programcının ilk öğrendiği dil olacaktır. Aslında tüm programlama dilleri yeni başlayanlar için uygundur. C makine diline yakın olması nedeniyle diğer üst seviye dillerden daha zorludur. Yine de onların yaptığı işi daha hızlı yapabilme ve bellekte az yer kaplaması nedeniyle tercih edilen bir dildir.
Bu dökümanları gerek yeni başlayanlar için gerekse orta ve ileri düzey kullanıcılar için hazırladım. Elbette ilk konular deneyimli kullanıcılar için sıkıcı olabilir. Fakat bu derslerde araya gelişmiş kullanıcıları da ilgilendirebileceğini düşündüğüm yazılar ve karşılaştığım sorunlarla ilgili çözümler ekledim. Bu da yeni başlayan kullanıcılar için oldukça kafa karıştırıcı olabilir. Bundan dolayı yeni programcılar konu içerisinde ileri düzey açıklamasını gördükleri yerleri atlayarak dersleri takip ederlerse daha kolay ilerleyebilirler. Kendilerini yeterli gördükleri veya belirli konuya ihtiyaç duymaları halinde bu bölümlere tekrar dönerek bilgilenebilirler. Unutmayın c binbir tuzakları olan ve donanıma erişebilmesi ile de tehlikeli bir dildir. Bundan ötürü alfabesini bilmediğiniz bir dilin gelişmiş yapısını birden öğrenemeyebilirsiniz. İlk konularda pek olmasa da ileriki konularda bolca örnek ve soru ile bilgilerinizi sınayabileceksiniz. |
|
NEDEN C :
C 'yi NERELERDE KULLANIRIZ :
Esnek yapısı gereği oyun yazılımlarından işletim sistemi yazılımlarına kadar her türlü uygulamada tercih edilen dildir.
C Öğrenmek için nelere ihtiyacımız var ?
Sadece c değil herhangi bir programlama dilini öğrenmek için temel matematik ve algoritmamızın iyi olması gerekmekte. Karşılaştığınız problemde birden çok çözüm yöntemi düşünmek algoritmanızın gelişmesine yardımcı olacaktır. Hiçbir programlama dili bilmeden de algoritma alıştırmaları yapabilirsiniz. Buna biraz da çözüme giden en kısa yolu bulmaya çalışmak da denebilir.
C ile C++ arasındaki fark nedir?: C++ nesne yönelimli iken C# fonksiyoneldir.
Terimler :
# işareti : Önişlemci işaretidir. Programa direktif verirler. include , ifdef , define gibi
; işareti : Yazılan komutun(cümlenin) bittiğini gösterir. Break anlamına gelir. Program her bir ; arasındaki cümleyi derler. İstisnaları vardır.
derlemek : Yazılan programı makine diline çevirmektir.
void : Boş demektir. Fonksiyon parametresi veya geri dönüşü olarak kullanılırlar.
Library(kütüphane) : Kütüphane kavramı kullanabilecek fonksiyonların tanımlarının yapıldığı dosyalardır. Tekrar tekrar aynı kodu yazmak yerine programımıza kütüphane ekleyerek içerdiği fonksiyonları, kullanabilmemize olanak verirler.
Program yazmak için ön hazırlık :
derleyici : yazacağınız programı makine diline çevirecek program.
editör : kodu yazacağımız ortam. Notpad, vi gibi bir editör yeterli olacaktır.
Fakat bu iki yapıyı ayrı ayrı kullanmak başlangıçta zor olabileceğinden genelde programcıların tercih ettiği derleyici+editör hazır programlar mevcuttur. Bunlar devcpp, eclipse, borland, MicrosoftVisualStudio gibi programlardır. Kullanacağınız bu programları işletim sisteminize göre seçmelisiniz. Linux ortamında MVS kullanamayacağınız unutmayın. Bu belirttiğimiz programlar debug mekanizmaları sayesinde hatalarımız anlamamıza da olanak tanırlar. Bu yüzden ilk aşamada tercihiniz paket programlar olsun.
Bir C Programı Hangi Süreçler Sonucu Çalışır Hale Gelir?
-
uzantılı kaynak kod bir c compiler ile object koda dönüşür.
source.c ----c compiler----> source.obj
Object kod mevcut kütüphane ile linker yardımıyla çalıştırılabilir hale gelir.
source.obj + library.lib ------linker----> sonuc.exe
Hazır Program(devcpp ,eclipse, vb) Kullanmayanlar için :
Eğer editörde yazmış olduğunuz kodu derleyiciniz ile derleyebiliyorsanız .obj dosyası oluşur. Aksi halde syntax hatanız vardır veya başlık eklenmemiş olabilir. .obj dosyası oluştuktan sonra link edilir. Eğer standart kütüphane kullanmıyorsanız ve bu kütüphane eklenmemiş ise link edemezsiniz.
-gcc ile kodun derlenmesi şu şekilde olur : Komut satırına gcc -o programım programım.c yazılarak obj dosyası oluşturulur. Eğer hatasız bir kodunuz varsa çalıştırılabilir programım dosyası oluşmuş olur.
Bir C programının yapısı:
Herhangi bir dil öğrenirken dilin gramerini bilmek gerekir. Cümleler nasıl kurulur? Yazılıma geçmeden önce bir c programının da gramerini bilmek gerekmekte. Aşağıda basit bir kod ile bu dilin yapısını öğrenelim :
|
| #include <stdio.h> |
Başlık tanımı |
| int main(void) |
Temel Fonksiyon |
| { |
{ |
| printf("hello, world\n"); |
printf("hello, world\n"); |
| return 0; |
return 0; |
| } |
} |
|
|
|
Başlık Nedir? : Program içerisinde kullanılacak fonksiyonların, değişkenlerin vb. bildirimlerinin bulunduğu tanım dosyalarıdır. Genelde ".h" uzantılıdırlar. Kodu yazarken kullanacağımız fonksiyon ve değişkenler mutlaka tanımlı olmalı. Bu tanımlama fonksiyonun alacağı parametreleri vb belirlemektir. Bu konuya ileride döneceğiz. C içerisinde birçok hazır kütüphane ile gelir ki sık kullanılan fonksiyonları tanımlamakla bizi uğraştırmaz.
Yukarıdaki örnekte başlık tanımlanmamış olsaydı programımız derlenemeyecekti. Çünkü printf fonksiyonunu derleyicimiz algılayamayacaktı. O halde printf fonksiyonunun bildirimini içeren stdio.h başlığını programımıza katarız. Her bir başlık birbirine mantıksal yakınlıktaki fonksiyonları içerir. Örneğin conio.h consol input output kısaltmasıdır ve adından da anlaşılacağı gibi konsol satırına bilgi yazdırmak okumak gibi fonksiyonları içermektedir. Aşağıda başlangıçta basit programları yazmak için gereken başlıklar listelenmiştir. Başlık içerikleri ileride fonksiyonlarda açıklanacaktır. |
Bazı Başlıklar
conio.h
stdio.h
stdlib.h
string.h
math.h
time.h |
|
Bu başlık dosyaları dışında da tecrübeli programcıların bile kullanmadığı başlık dosyaları mevcuttur. Bunların hepsini iyi derecede bilmek yıllar alır. Bu açıdan yeni başlayanlar için yeterli olabilecek başlık dosyalarını gösterdik. Bazen de programımız karmaşıklaşmaya başlar ve aynı mantığa uygun fonksiyonları bir arada görmek isteyebiliriz. Böyle durumlarda kendi başlık dosyamızı oluşturmak durumunda kalabiliriz.
Bir header(başlık) dosyası yaratmak :(İleri Düzey)
Başlık dosyası bir fonksiyona birden çok .c içerisinden erişebilmemizi sağlar. Aşağıda basit bir başlık ile diğer kodlar içerisinden nasıl erişildiğini inceleyelim. |
| /**********************************/
/* DENEME başlık dosyası */
/**********************************/
#define MAX_DENEME_SAYISI 5
void DenemeFonksiyonu(int DenemeSayisi); |
/**********************************/
/* DENEME kod dosyası */
/**********************************/
#include <stdio.h>
#include "dnm.h"
void DenemeFonksiyonu (int a)
{
printf ("Deneme sayisi : %d\n" , a);
} |
Bu dosyayı da dnm.c olarak kaydedelim. Artık main fonksiyonunu yazabiliriz. Dilerseniz bunu da ayrı bir dosyaya yazalım ki header ile erişimi daha kolay anlayabilelim.
/**********************************/
/* DENEME main dosyası */
/**********************************/
#include <stdio.h>
#include "dnm.h"
int main(void)
{
int a;
for (a = 1 ; a<MAX_DENEME_SAYISI ; a++)
{
DenemeFonksiyonu(a);
}
system("PAUSE");
return 0;
} |
Kodu derleyip çalıştırdığımızda dnm.h başlığını eklediğimiz için sorunsuz bir şekilde derlenebildiğini göreceğiz.
* * *
Bir library(kütüphane) oluşturmak (İleri Düzey)
Standart c de sıkça kullanılan fonksiyon, makro vb için tanımlı standart kütüphane adlı kütüphane vardır. Tüm c derleyicileri standart kütüphaneyi kullanırlar. Buna ilave kendi kütüphaneleri de vardır. Bazen bir derleyicide sağlıklı çalışan kod bir başka derleyici tarafından algılanmamasının nedeni kütüphanenin bulunmayışıdır. Sonuçta Standart kütüphane dışı kütüphane kullanmak kodun taşınabilirliğini azaltacak ama bizim bir başka program yazarken zaman kaybımızı engelleyecektir. Bir programda hazırladığımız yapıyı bir diğer programa ekleyerek aynı kodu yazmaktan kurtulmuş oluruz.
Kütüphane derlenmiş bir programdır. .c ve .h dosyaları içerir. Fakat bu çalıştırılabilir bir program değildir. .exe uzantısı yerine .lib ve .dll uzantıları olur.
İki tip kütüphane vardır. Statik ve dinamik kütüphaneler. Statik kütüphaneler .lib uzantılı iken dinamik kütüphaneler .dll uzantılıdır. Kütüphane programı derlenirken kütüphanede tanımlamış olduğumuz tüm bilgiler .obj dosyası içerisine yazılır. Statik ve dinamik kütüphane bundan sonraki adımda yani link işlemi esnasında birbirlerinden ayrılırlar. Link işlemi daha önce soylediğimiz üzere obj dosyası ile lib dosyasından exe oluşturuyordu. Statik kütüphane kavramında bu yapı değişmez ancak dinamik kütüphanede linker kullanılan kütüphanedeki tanımların kodun hangi kısmından çağrıldığını yazar. Çalışma esnasında bu bölgeye erişerek fonksiyonu çalıştırır.
Basit bir .lib ya da .dll yaratalım. Bunun için devcpp gibi ideler hazır bir yapı sunarlar. Bu yapıda kütüphanemizi oluşturacak header(başlık) dosyasını yapılandıracağız : |
|
/**********************************/
/* DENEME kütüphanesi başlık dosyası */
/**********************************/
#ifndef _DENEMELIB_H_
#define _DENEMELIB_H_
void DenemeFonksiyonu(); #endif
|
| yukarıdaki dosyayı .h olarak kaydedin. Şimdi de başlık dosyasında prototipini belirlemiş olduğumuz fonksiyonun yapacağı işlemi belirleyeceğimiz kodu yazalım : |
/**********************************/
/* DENEME kütüphanesi kod dosyası */
/**********************************/
#include "DnmLib.h"
#include <stdio.h>
void DenemeFonksiyonu()
{
printf("Deneme Başarılı...\n");
} |
Sonuçta derleme işlemi bitince .lib (eger dinamik seçili ise .dll) uzantılı dosyamız oluşmuş olacak. Herhangi bir konsol uygulaması hazırlayarak denememizin doğru olup olmadığını anlayalım.
/************************************/
/* DENEME kütüphanesi konsol uygulaması */
/************************************/
#include "DnmLib.h"
int main(void)
{
DenemeFonksiyonu();
return 0;
} |
Uygulamamızı kaydettiğimiz yere az önce oluşturduğumuz .lib ya da .dll dosyamızı da eklemeliyiz. Derleme sonucu hata almayız ancak link hatası ile karşılaşırız. Daha önceden link hatasının neden oluşabileceğinden bahsetmiştik. Linker error sonucu şunu anlıyoruz ki kullandığımız kütüphane projemize ekli değil . Proje ayarlarında library eklenecek kısma az önce oluşturduğumuz .lib i eklemeliyiz.(Örneğin Bu devcpp de Project Options->Parameter sekmesinde linker altındadır. MVS da da aynı şekilde Project Settings->Linker sekmesindedir.) Ekleme işlemi sonucunda konsol programımız artık link edilebilecektir.
* * *
Temel Fonksiyon: Bir c programı çalıştırıldığında yazdığımız sırayla derlenmek zorunda değildir. Açılışta "main" adlı fonksiyonu arar. Bulduğunda içeriği yazıldığı sıra ile uygulamaya başlar. Fonksiyon yapısına ileride değineceğiz. Bir programda main fonksiyonu tek olmak zorundadır. Aksi halde programın nereden başlayacağı anlaşılamayacak dolayısıyla programımız derlenmeyecektir.
Tekrar örnek programımıza dönersek main fonksiyonumuzun önünde int ifadesini görüyoruz. Anlamı tam sayıdır. C'de yazacağımız her fonksiyonun her değişkenin tipini belirtmek zorunluluğu vardır. Tip belirtmek değişkenlerin bilgisayarımızın hafızasında kaplayacağı yeri belirmek için önem arz eder. Her bir değişken hafızada tanımlandığı tipe göre yer kaplar. Böylece " Çekoslovakyalılaştıramadıklarımızdan mısınız" cümlesi ile "1" sayısının kaplayacağı yeri belirleyip hafıza yönetimini de sağlıklı hale getirmiş oluruz. Programımız daha hızlı çalışır. O halde önce kullanılacak tipleri açılayalım
Değişken ve Değişken Tipleri :
Değişken tanımlarken değişken isimlerinin doğru yazılması gereklidir.
-
değişken isminin bir komuta (if,for,...), tipe(int,char,...), hazır fonksiyon(printf,scanf,...) adına karşılık gelmediğinden emin olmalısınız.
-
Değişken isimleri mutlaka harf ile başlar. Özel karakterler (',+%&...) veya sayılar ile başlamamalıdır.
-
Değişkenler harf olarak standart İngilizce harfler içermeli.
Değişken tiplerinin hafızadaki yeri bilgisayarın işlemcisine göre değişiklik gösterebilirler. Bu açıdan aşağıda kendi bilgisayarınızda değişkenlerin kaplayacağı yeri bilmeniz için hazır bir kod sunuyorum.
#include <stdio.h>
#include <conio.h>
int main(void)
{
int a;
float b;
char c;
double d;
long e;
printf("int uzunlugu=%d \n", sizeof(a));
printf("float uzunlugu=%d \n",sizeof(b));
printf("char uzunlugu=%d \n", sizeof(c));
printf("double uzunlugu=%d \n", sizeof(d));
printf("long uzunlugu=%d \n", sizeof(e));
getch();
return 0;
} |
Değişken Bildirimleri:
Yerel Bildirim :
Yerel bildirim bir fonksiyon içerisinde tanımlanan değişkenlerdir. Yerel bildirimler tanımlı oldukları fonksiyon dışında tanımlı değillerdir.
Genel Bildirim :
Genel bildirim fonksiyonlar dışında tanımlanırlar. Programın her fonksiyonundan tekrar bir tanımlama gereği duyulmadan kullanılabilirler.
Formal Bildirim:
Fonksiyonların parametrelerinin bildirimidir. Fonksiyon tanımlandıktan sonra bu fonksiyonun parametreleri tanımlanır ve fonksiyon dışında kullanılamazlar.
extern bildirimi :
Karmaşık programlarda ilişkisel yapılar ayrı ayrı .c dosyalarında tutulabilirler. Bu durumda bazen bir dosyada kullanılan fonksiyon ya da değişkeni diğer c dosyasında kullanmak isteyebiliriz. Extern bir dosyadan diğerine değişken ve fonksiyon aktarımı yapabilmemize olanak tanır.
static bildirim :
Tanımlandıkları yerde kullanılıp erişilebilirler. Ancak bellekte durdukları yer sabittir. Normalde bir değişken tanımlandığı fonksiyon işlemi bittiğinde bellekten silinirken bu bildirim ile silinmesi engellenir.
register bildirimi :
Bu bildirim int ve char değişkenleri önüne koyularak kullanılır. Normalde değişkenler bellekte yer alırken register, değişkenin işlemcinin kullandığı registerları kullanır. Böylece register değişkenlere erişim daha hızlı olur.
volatile bildirimi:
Bir program çalıştırıldığında optimizasyona girer. Böylece hız ve bellek kullanımı sağlıklı hale gelir. Ama bu optimizasyon başka program tarafından erişilmesini istediğimizebilecek bir değişkenin yapısını bozabilir. Volatile bildirimi ile kullanılan değişkenler optimizasyon işleminden geçmezler. Böylece bozulma ihtimali engellenmiş olur.
const bildirimi :
Herhangi bir değişken tanımlandıkları yerlerde kullanılarak değiştirilebilirler. Const bildirimi ile tanımlanan degiskenlerin içeriği değiştirilemez yalnızca kullanılabilirler.Örneğin
const PI 3,14;
Terimler :
byte : 8 bite eşittir.
bit : Bilgisayarda aslında iki durum vardır. Ya 0 ya da 1 durumu. Bu ikili sistem yapısını bit ile ifade ederiz.
Tip Adı |
Açıklaması |
Kapladığı yer |
int |
Tamsayı : Değeri -32768 ile 32767 arasındadır. Bu aralık dışında kalan tamsayılar long ile belirlenir. |
4 byte |
float |
Ondalıklı sayı : 3,75 benzeri sayıları saklar. Değeri 3.4E-38 ile 3.4E+38 arasındadır |
4 byte |
char |
Karakter : Karakter saklar ascii tablodaki değerler yani 0-255 arasında değer alır. |
1 byte |
double |
Kayan nokta : Yuvarlama yapmadan ondalıklı sayı yazmamıza olanak tanır. 2,33333... şeklindeki bir sayıyı float ile 2,333333334 olarak görebilecekken double ile 2,333333333333334 olarak daha kesin bir şekilde görebiliriz. |
8 byte |
long
veya
long int |
Uzun Tamsayı : -2,147,843 ile 2,147,843 arasında değer alabilir |
4 byte |
unsigned int |
İşaretsiz Tamsayı : Negatif değerler almaz. Böylece değerler 0 ila 65535 arasındadır. |
4 byte |
SORU : Yukarıda tip belirlemelerinin alt ve üst aralıkları nasıl tespit edilebilir?
a-) BAŞLANGIÇ DÜZEY: Eğer programlama tecrübeniz yoksa bunu mantıksal olarak kağıt üzerinde çözmeye çalışın.
b-) ORTA DÜZEY : Kodu yazın.
Aritmetik Operatörler :
Değişkenler ile işlem yapmayı sağlarlar.
Kullanılışı c = a+b şeklindedir.
+ |
Toplama |
- |
Çıkarma |
* |
Çarpma |
/ |
Bölme |
% |
Mod bulma. 12%5 = 2 , 451%2 = 1 |
-- |
Bir azaltma |
++ |
Bir arttırma |
Daha karmaşık işlemler için hazır fonksiyonlar kullanılabilir. Örneğin bir sayının cosinüsünü almak için cos() fonksiyonu kullanılır. Bunun için math.h başlığı eklenmelidir.
SORU : % işareti ile mod bulma işlemi yapılmakta. Eğer bu basit gösterim tanımlı olmasaydı bir sayının modunu nasıl bulabilirdik?
a-) BAŞLANGIÇ DÜZEY: Eğer programlama tecrübeniz yoksa bunu mantıksal olarak kağıt üzerinde çözmeye çalışın.
b-) ORTA DÜZEY : Kodu yazın.
Karşılaştırma Operatörleri :
Değişkenleri birbiri ile kıyaslamaya yararlar.
Kullanılışı a < b şeklindedir.
> |
Büyük mü? |
< |
Küçük mü? |
>= |
Büyük veya eşit mi? |
<= |
Küçük veya eşit mi? |
== |
Eşit mi? |
!= |
Farklı mı? |
İşlem Öncelik sırası
parantez
/ *
+ -
Dikkat edilecek olursa tüm karşılaştırma operatörleri soru şeklindedir. Tek başına a < b şeklinde kullanımı anlamsızdır. Eğer a < b ise şu işlemi yap şeklinde kullanılmaktadır.
İşlem öncelik sırası hatası yapılan algoritma ne kadar doğru olursa olsun sıralamadan ötürü hatalı sonuç almamıza neden olurlar. 6/2+1 = 4 iken 6/(2+1) = 2 dir.
Mantıksal Operatörler :
Bazen sadece tek bir karşılaştırma algoritmamız için yetersiz olabilir. Böyle bir durumda mantıksal operatörlere ihtiyaç duyarız.
Gösterilişi |
Anlamı |
Kullanılışı |
&& |
VE : operatörün sağ ve sol tarafındaki her iki değer de doğru mu? |
a<b && d>c |
| | |
VEYA : operatörün sağ ve solundaki değerlerden herhangi biri doğru mu? |
a<b || d>c |
! |
DEĞİLİ : Operatörün sağındaki değer yanlış mı? |
! (a<b) |
Bit İşlem Operatörleri : (İLERİ DÜZEY)
Bazen bir bytelık değerle işlem yapmak yetersiz olabilir. Bunun için bitler ile işlem yapmak gerekliliği doğar.
Bir sayıyı ikili sisteme çevirmek :
İkili sistemdeki bir sayıyı onluk sisteme cevirmek :
0000 0011 ( bit düzeyinde 3 sayısının gösterilişi) buna A diyelim
xxxx xxxx (bit düzeyinde herhangi bir B sayısı)
1110 1010 C olmak üzere
Gösterilişi |
Anlamı |
Açıklama ve Örnekler |
& |
VE |
A & B = 0000 00xx tir |
| |
VEYA |
A | B = xxxx xx11 dir |
^ |
YA DA |
A ^ C = A ve Cnin tüm bitlerini kıyaslayıp aynı olanları 0 ve farklı olanları 1 ile gösterir sonuc 1110 1001 olacaktır. |
~ |
Bire tamamlama |
Tüm bitleri inceler 1 olanları 0 , 0 olanları 1 yapar.
~A = 1111 1100 olur. |
<< |
Sola ötele |
Verilen değerin tüm bitleri << işaretinin solunda kalan sayı kadar sola ötelenir. Varolan boşluğa 0 değeri gelir.
A<< 1 = 0000 0110
A<< 2 = 0000 1100 |
>> |
Sağa ötele |
Verilen değerin tüm bitleri >> işaretinin solunda kalan sayı kadar sağa ötelenir. Varolan boşluğa işlemciye bağlı olarak 0 veya 1 gelir. Biz 0 geldigini varsayacagız.
C>> 1 = 0111 0101
C>> 2 = 0011 1010 |
* * *
Atama Operatörü :
Atama Operatörü en basit hali ile = işareti ile gösterilir. Bilinen eşitliği ifade eder.
float pi;
.
.
pi = 3,14
|
int a;
int b;
int c;
a = b + c;
|
int a;
.
a = a * 8;
|
int a;
int b;
b = a * 8;
a = b;
|
Yukarıda ilk üç örneği inceleyin. Bunlardan üçüncüsü ne ifade ediyor? a sayısı bir bilinmeyendir ve kendisinin 8 katına eşit olmaktadır. Bu kullanımla sıkça karşılaşacağız. C de atama ifadesi önce eşitliğin sağ tarafını hesaplar. Örneğin a daha önce 1 değerini aldı ise bu atama sonucu yeni değeri 8; eğer 2 değerini aldı ise atamanın sonucunda yeni değeri 16 olacaktır. Bu kullanılış son örnek tablosunun kısaltılmışıdır.
Yukarıdaki örnek de 3 ve 4 teki işlemin aynısıdır. a'nın yeni değeri ; a'nın eski değerinin 8 katıdır. Tüm aritmetiksel işlemler ile bit işlemlerde atama operatörleri kullanılabilir.
Atama Operatörü |
Anlamı |
+ = |
Ekleyerek ata |
- = |
Çıkararak ata |
* = |
Çarparak ata |
/ = |
Bölerek ata |
% = |
Kalanını alarak ata |
Karşılaştırma Operatörü :
İleride göreceğimiz koşul cümlesi if in yaptığı işi yapar. ? : ikilisiyle gösterilir.
koşulum ? dogru_ise_yapılacak_islem : yanlis_ise_yapilacak_islem
şeklinde kullanılır. Örneğin
(a > 5) ? printf ("a sayısı 5 ten büyüktür") : printf ("a sayısı 5 ten küçük ya da ona eşittir") ;
İşaretçi Operatörleri :
İleride pointer konusunda açıklanacaktır. * ve & işaretleri ile gösterilir.
SONRAKİ KONU : Fonksiyonlar
|