Ders2: Değişkenler ve Sabitler
Değişkenler bellekte bilginin saklandığı gözlere verilen sembolik adlardır.
Her değişkenin tuttuğu değerin nasıl bir veri olduğunu gösteren bir tipi vardır.
C dilinde temelde birkaç tane değişken tipi vardır. Bunlar Tablo 2.1 te listelenmiştir.
Değişken tipi | Açıklama | Bellekte işgal ettiği boyut (byte) |
char | tek bir karakter için | 1 |
int | tamsayı için | 2 yada 4 |
float | tek duyarlı gerçel sayı için (6 basamak hassasiyet) | 2 yada 4 |
double | çift duyarlı gerçel sayı için (12 basamak hassasiyet) | 4 yada 8 |
Fakat bazı özel niteleyiciler vardır ki bunlar yukarıdaki temel tiplerin
önüne gelerek onların türevlerini oluşturur.
Bunlar short, long, unsigned dır.
Bu niteleyiciler sayesinde değişkenin bellekte kaplayacağı alan
isteğe göre değiştirilebilir. Kısa (short), uzun (long),
ve normal (int) tamsayı arasında yalnızca uzunluk farkı vardır.
Eğer normal tamsayı 16 bit (2 byte) ise uzun tamsayı 32 bit uzunluğundadır.
Kısa tamsayı 16 biti geçmeyecek uzunluktadır.
Değişken tiplerinin bellekte kapladığı
alan sizeof operatörü ile öğrenilebilir. Program 2.1 bu amaçla yazılmıştır.
Program 2.1 : Değişken tipleri ve türevlerinin bellekte kapladıkları alanlar1: /* sizeof operatörünün kullanımı */ 2: #include <stdio.h> 3: 4: main() 5: { 6: printf( "\nchar : %d byte", sizeof( char )); 7: printf( "\nint : %d byte", sizeof( int )); 8: printf( "\nshort : %d byte", sizeof( short )); 9: printf( "\nlong : %d byte", sizeof( long )); 10: printf( "\nunsigned char : %d byte", sizeof( unsigned char )); 11: printf( "\nunsigned int : %d byte", sizeof( unsigned int )); 12: printf( "\nunsigned short : %d byte", sizeof( unsigned short )); 13: printf( "\nunsigned long : %d byte", sizeof( unsigned long )); 14: printf( "\nfloat : %d byte", sizeof( float )); 15: printf( "\ndouble : %d byte", sizeof( double )); 16: printf( "\nlong double : %d byte", sizeof( long double )); 17: 18: return 0; 19: }
Değişkenler ve Sabitlerin Bildirimi
Değişkenler ve Sabitler programın başında bulunmalıdır. Bazı uygulamalarda değişkenin bir
başlangıç değerinin olması istenir. Böyle durumlarda değişken bildirilirken başlangıç
değeri verilebilir. Örneğin:
char isim='X', z; int sayi=0, n=10; float toplam=0.0, sonuc=22.14;
Sabit bildirimi, başlangıç değeri verilen değişken bildirimi gibi yapılır.
Ancak; veri tipinin önüne const anahtar sözcüğü koyulmalıdır. Örneğin:
const float PI = 3.142857; const double NOT= 12345.8596235489; const int EOF= -1; const char[] = "devam etmek için bir tuşa basın...";
gibi sabit bildirimleri geçerli olup bunların içerikleri program boyunca değiştirilemez.
Yalnızca kullanılabilir. Genellikle, sabit olarak bildirilen değişken isimleri büyük
harflerle, diğer değişken isimlerinin ise küçük harflerle yazılması(gösterilmesi)
C programcıları tarafından geleneksel hale getirilmiştir.
Birçok C programında sabitler #define önişlemci komutu ile de tanımlandığını
görebilirsiniz. Bu komutla sabit bildirimi, bir program parçasına ve makro fonksiyon
tanımlaması yapılabilir. Bir program geliştirilirken simgesel sabitlerin kullanılması
programın okunurluğunu arttır ve bazen gerekli de olabilir. Aşağıda verilen simgesel
sabit bildirimleri geçerlidir. #define önişlemcisi ile makro fonksiyon
tanımlama işlemi Fonksiyonlar bölümünde anlatılacaktır.
#define MAX 100 #define DATA 0x0378 #define YARICAP 14.22Değişken Bildirim Yerleri ve Türleri
Yerel(local) BildirimTip Dönüşümleri
Yerel değişkenler kullanıldığı fonksiyon içerisinde bildirilir. Yalnızca bildirildiği fonksiyon içerisinde tanınır ve kullanılabilir.int topla(int a,int b) { /* yerel (local) değişken c nin bildirimi */ int c; c = a + b; return c; }Genel(general) Bildirim
Genel değişkenler bütün fonksiyonların dışında bildirilir. Bir değişken program boyunca sürekli olarak kullanılıyorsa genel olarak bildirilmelidir.#include <stdio.h> void karesi(); /* ** m ve n global tip değişkendir. ** bu iki değişken tüm program boyunca kullanılmaktadır */ int m,n; main(){ m=7; karesi(); printf("%d nin karesi %d dir",m,n); } void karesi() { n = m*m; }
Bir formül içerisinde bir çok değişken veya sabit olabilir. Bu değişken ve
sabitler birbirinden farklı tipte olursa, hesap sonucunun hangi tipte olacağı önemlidir.
Bir bağıntıda ,çeriği dönüşüme uğrayan değişkenler eski içeriklerini korurlar.
Dönüştürme işlemi için geçiçi bellek alanı kullanılır; dönüştürülen değer
kullanıldıktan sonra o alan serbest bırakılır.
char kr; int tam; long int ltam; unsigned int utam; short int stam; float f; double d;bildirimlerine göre:
bağıntı sonuç tipi ------- ---------- kr+5 int kr+5.0 double d+tam double f+d-2 double utam-tam unsigned ltam*tam long tam/2 int tam/2.0 doublebir değişkenin sabit değerin veya bağıntının önüne tür (cast) yazılarak sonucun hangi tip çıkması istendiği söylenebilir. Genel yazım biçimi:
(tür tipi) bağıntı;örneğin x int, a ve b float tipinde iki değişken olsun:
int x=3; float a,b; ... a = x/2; b = (float) x/2;işleminin sonucunda a değişkenine 1.0, b değişkenine 1.5 değeri aktarılır. yani x/2 ile x/2.0 aynı anlamda değildir.
Hiç yorum yok:
Yorum Gönder