C Programlama

Ek Bilgiler

C'de Sabitler

Sabitler, adından da anlaşılabileceği gibi, programlarda kullanılan değişmez değerlerdir. Sabitler genellikle programların başında değişkenlere bir ilk değer atama amacı ile veya farklı ifade oluşumlarının içinde kullanılabilir. Daha önceki örneklerimizde bir çok defa sabitleri kullandık. Şimdi, bu konuyu daha ayrıntılı olarak incelemeye çalışalım:

Bütün veri çeşitleri ile ilgili bir sabit tanımlaması yapmak mümkündür. Şimdi, aşağıda gösterilen sabitleri ve karşılarında gösterilen açıklamaları inceleyelim:

135           int sabiti
37.362        float sabiti
'B'           char sabiti
"Bilgisayar"  Karakter dizisi sabiti

char sabitler tırnak işareti, karakter dizisi sabitleri çift tırnak işareti içinde gösterilir. C dilinde, yukarıda görüldüğü gibi, bir int, float, char ve karakter dizisi sabiti tanımlayabilirsiniz. Programlarınız içinde bu değerleri kullanabilirsiniz. Ayrıca float sayıları 10'un katları çarpanı şeklinde ifade edebilirsiniz. Örneğin, aşağıdaki her iki ifade de birbirine eşittir:

5687.32 56.8732E2

E2 ifadesi 10 sayısının karesi olarak değerlendirilir. Bu da 56.8732 sayısının 100 ile çarpımı demek olduğundan, satırın sol tarafında yer alan 56.8732 değeri elde edilir. Şimdi, bu özelliği kısa örnek ile inceleyelim:

#include <stdio.h>

main()
{
  printf("%f", 3.341E2);
}

Yukarıdaki örnekte, program aşağıdaki satırı ekrana yazar:

334.100000

Program, printf() fonksiyon satırında yer alan float sabiti ekrana yazar.

float veri çeşidi için, eğer sayının sonuna F harfi koyarsanız, sayı float bir sayı olarak işlem görür. Eğer sayının sonuna L harfi koyarsanız, sayı long double bir sayı olarak işlem görür.

int veri çeşidi için, bir sayının sonuna koyulan U harfi sayının unsigned, L harfi ise long olarak işlem görmesini sağlar. Aşağıda farklı veri çeşitlerinden tanımlanmış sabitler yer almaktadır:

Veri çeşidi     Sabitler

int             5   -53  24762
long int        43245L -632L  46875L
short int       29  -621  3041
unsigned int    254U  5427U  23856U
float           51.43F -5.42F 3834.54F
double          8534.26 275.864 -3266.396
long double     21376.2L -7457.25 573.854L

C dilinde, 10'luk sayı sistemi yerine 8'lik veya 16'lık sayı sistemi kullanabilirsiniz. 8'lik sayı sistemine OCTAL, 16'lık sayı sistemine ise HEXADECIMAL sayı sistemi adı verilir. 8'lik sayı sisteminde 0'dan 7'e kadar olan sayılar kullanılır. Yani, bu sistemde kullanılan en büyük sayı 7 sayısıdır. 16'lık sayı sisteminde ise 0'dan 9'a kadar olan sayılar ve A'dan F'ye kadar olan harfler kullanılır. A'dan F'ye kadar olan harfler sırası ile 10, 11, 12, 13, 14 ve 15 sayılarını temsil ederler:

OCTAL       : 0 1 2 3 4 5 6 7
HEXADECIMAL : 0 1 2 3 4 5 6 7 8 9 10 A B C D E F

C dilinde sabit tanımlaması yaparken 10'luk sayı sistemi yerine, 8'lik veya 16'lık sayı sistemi kullanabilirsiniz. Hexadecimal bir sabit 0x (0 rakamı ve x harfi) ile başlar. Octal bir sabit ise 0 rakamı ile başlar. Aşağıda her iki sayı sisteminde verilmiş sabitler görülmektedir:

10'luk sayı sistemi        16'lık sayı sistemi        8'lik sayı sistemi               

       206                        0xCE                      0316
       727                        0x2D7                     01327

C'de, karakter dizisi olarak tanımlanan bir veri çeşidi yoktur, ancak siz karakter dizisi sabitleri tanımlayabilirsiniz. Karakter dizisi (" ") işaretleri arasında yer alan karakter veya karakterlerden oluşur:

'B'          char veri türü sabiti
"B"          Tek harflik karakter dizisi sabiti
"Bilgisayar" Karakter dizisi sabiti

Karakter dizisi sabitlerini direk olarak veya format tanımlayıcıları ile kullanabilirsiniz.

#include <stdio.h>

main()
{
   printf("C Programlama Dilinde işlem satırı");
   printf("\n");
   printf("%s %s %s", "C Programlama Dilinde", "işlem", "satırı");
}

Program aşağıdaki satırları ekrana yazar:

C Programlama Dilinde işlem satırı
C Programlama Dilinde işlem satırı

İlk işlem satırında cümleyi tek bir karakter dizisi sabiti olarak, üçüncü işlem satırında ise %s format tanımlayıcısı kullanarak 3 karakter dizisi sabiti olarak ekrana yazar.

Şimdi sabitler hakkında öğrendiklerimizi örnekler üzerinde incelemeye çalışalım:

#include <stdio.h>

main()
{
  printf("%hd ", 78620);
  printf("%ld", 78620L);
}

Yukarıdaki örnekte, program aşağıdaki satırı ekrana yazar:

13084 78620

printf() fonksiyon satırlarında verilen sabit long int bir sabit olan 57054 olduğundan %ld format tanımlayıcısı kullanılması gerektiği halde, ilk printf() satırında normal short int veri türü format tanımlayıcısı olan %hd kullanıldığı için program 13084 gibi anlamsız bir değeri ekrana yazar. İkinci printf() fonksiyon satırında ise program uygun olan %ld format tanımlayıcısını gördüğünden herhangi bir sorun çıkarmaz.