Yalnız Mesajı Göster
  #2  
Eski 20-07-2006, 02:12 PM
empedoCles kullanıcısının avatarı
empedoCles empedoCles Çevrimdışı
Müdavim
 
Giriş: Sep 2005
Mesaj: 123
empedoCles İtibar düzeyini kapadı
Önceceden Tanımlanmış Ters Bölü Karakter Sabitleri (Escape Sequences)






kullanılışlarına bir örnek :

{
char ch;

ch = '\a';
}

1.16'lık (hexadecimal) sayı sisteminde tanımlanmış karakter sabitleri
Tek tırnak içinde tersbölü ve x karakterlerinden sonra bir hex sayı verilirse bu ASCII tablosundaki o sayısal değerin gösterdiği sıra numarasındaki karaktere işaret eden bir karakter sabitidir.

'\x41' /* 41H numaralı ASCII karakteridir. */
'\xff' /* FFH numaralı '2' karakter sabitidir. */
'\x1C' /* 1C numaralı ASCII karakter sabitidir. */

Küçük "x" yerine büyük harfle "X" yazmak C'nin ilk klasik versiyonunda kabul ediliyordu şimdi artık geçerli değildir. Örnek :

{
char harf;

harf = '\x41';
}

Yukarıdaki örnekte harf isimli char türden değişkene 41H ASCII sıra no.lu karakter atanmıştır. Bu da desimal sistemdeki 65 sayısına eşittir. 65 sıra nolu ASCII karakteri 'A' karakteridir. Dolayısıyla harf isimli değişkene 'A' atanmıştır.

2.8'lik (octal) sayı sistemde tanımlanmış karakter sabitleri
Tek tırnak içinde tersbölü karakterinden sonra bir oktal sayı yazılırsa bu kullanılan karakter setindeki o sayısal değerin gösterdiği sıra numarasındaki karaktere işaret eden bir karakter sabitidir. Tek tırnak içindeki ters bölü karakterini izleyen sayı üç basamaktan uzun olmamalıdır. Sekizlik sayıların yazımında olduğu gibi sayının başında sıfır olma zorunluluğu yoktur. Bu şekilde yazılabilecek en büyük karakter sabiti '\377' dir.:

'\012' /* 10 numaralı ASCII karakteri, Tam sayı değeri 10 */
'\16' /* 14 numaralı ASCII karakteri. Tam sayı değeri 14 */
'\123' /* 83 numaralı ASCII karakteri. Tam sayı değeri 83 */

Program içinde kullanımına bir örnek:

{
char a, b;

a = '\xbc' ; /* hex sistemde tanımlanmış char sabit */
b = '\012'; /* oktal sistemde tanımlanmış bir char sabit */
}

7 numaralı ASCII karakteri olan çan karakterini sabit olarak 3 biçimde de yazabiliriz.

'\x7' /* hex gösterimli karakter sabiti */
'\07' /* oktal gösterimli karakter sabiti */
'\a' /* önceden belirlenmiş ters bölü karakter sabiti */

Burada tercih edilecek biçim son biçim olmalıdır.Hem taşınabilir bir biçimdir hem de okunabilirliği daha iyidir. Başka karakter setlerinde çan sesi karakteri 7 sıra numaralı karakter olmayabilir ama önceden belirlenmiş ters bölü karakter sabiti şeklinde ifade edersek hangi sistem olursa olsun çan sesi karakterini verecektir. Ayrıca kodu okuyan kişi çan sesi karakterinin 7 numaralı ASCII karakteri olduğunu bilmeyebilir ama C programcısı olarak '\a' nın çan sesi karakteri olduğunu bilecektir.

Karakter sabitleri konusunu kapatmadan önce karakter setleri konusunda da biraz bilgi verelim:

Günümüzde kullanılan en popüler karakter seti ASCII karakter setidir. ASCII (American Standard Code for Information Interchange) sözcüklerinin başharflerinden oluşan bir kısaltmadır. ASCII setinin orjinal versiyonunda karakterler 7 bitlik bir alanda kodlanmıştır. Bazı bilgisayarlar ise 8 bit alana genişletilmiş ASCII seti kullanırlar ki bu sette 128 yerine 256 karakter temsil edilebilmektedir. Farklı bilgisayarlar farklı karakter setleri kullanabilmektedir. Örnek olarak IBM mainframe'leri daha eski bir set olan EBCDIC seti kullanırlar. Unicode ismi verilen daha geliştirilmiş bir karakter seti vardır ki karakterler 2 byte alanda temsil edildikleri için bu sette 65.536 farklı karakter yer alabilmektedir. Gelecekte bir çok makinanın bu karakter setini destekleyecek biçimde tasarlanacağı düşünülmektedir.
İşaretsiz türlere ilişkin sabitler

İşaretsiz türlere ilişkin sabitler onların işaretli biçimlerinin sonuna u ya da U getirilmesiyle elde edilirler.

-15000 (signed) int sabit
15000U (unsigned) int sabit.
1200L (signed) long sabit
1200Lu (unsigned) long sabit.

Sonek olarak kullanılan l, L, u ve U harflerinin sırası önemli değildir.

123ul
123UL
123Lu
123lu

Yukarıdaki hepsi geçerli birer uzun tamsayı (unsigned long int) sabittir.
Tamsayı sabitlerinin 16'lık ve 8'lik sistemlerde gösterilmesi

C'de tamsayı sabitleri (char, int, long) 10'luk sistemin yanısıra 16'lık ve 8'lik sistemlerde de yazılabilirler. Bu sayı sistemleriyle yazılmış tamsayı sabit türleri için yukarıda verilen kurallar aynen geçerlidir. Çünkü bir sayıyı 16'lık ya da 8'lik sistemde yazmakla onun yalnızca görünümünü değiştirmiş oluruz. Sabit türleri gösterim biçimiyle değil nicelikle ilişkilidir. C dilinde ikilik sayı sisteminde sabitlerin yazılması söz konusu değildir.

16'lık sistemde gösterim 0Xbbb.. biçimindedir. (b karakterleri basamakları gösteriyor, 9'dan büyük basamak değerleri için A, B, C, D, E, F karakterleri ya da a, b, c, d, e, f karakterleri kullanılabilir.

8'lik sistemde ise 0bbb.. biçimindedir. (nadir olarak kullanılır). Örnekler:

0x12 sayısı hex gösterimli bir tamsayı (int) sabit.
0X12L sayısı hex gösterimli bir uzun tamsayı (long) sabit.
0x1C205470 hex gösterimli bir uzun tamsayı (long) sabit. Çünkü (DOS'da) tamsayı sayı sınırını aşmaktadır.
0x1934ul hex gösterimli işaretsiz uzun tamsayı (unsigned long) sabittir.
01234 oktal gösterimli tamsayı (int) sabit
0567L oktal gösterimli uzun tamsayı (long) sabit
0777U oktal gösterimli işaretsiz tamsayı (unsigned int) sabit
0452Lu oktal gösterimli (unsigned long) sabit.

Sabitler yukarıda gösterildiği gibi her üç sayı sisteminde de yazılabilir, hatta bir ifade içinde kullanılan sabitler farklı sayı sistemlerinde de yazılmış olabilirler, bu derleme zamanında error oluşturacak bir neden olmayıp tamamen legaldir.

...
int x;
x = 0x1AC2 + 345 + 01234;
Gerçek Sayı Sabitleri (floating Constants)

1.float türden sabitler
Nokta içeren ve sonuna f ya da F getirilmiş sabitler float türden sabitler olarak ele alınırlar. Örneğin:

1.31F
10.F
-2.456f

float türden sabitlerdir.

Not : Klasik C'de, yani C dilinin standartlaştırılmasından önceki dönemde float türden bir sabit elde etmek için, sayının sonuna f eki alması yeterliydi yani nokta içermesi gerekmiyordu ama standartlarda yapılan değişiklikle artık float sabitlerin sonuna ek gelse de mutlaka nokta içermeleri gerekiyor. Yani derleyiciler 3f şeklinde bir yazımı derleme zamanında bir hata (error) mesajıyla bildiriyorlar.

2.double türden sabitler
Sonuna f ya da F eki almamış nokta içeren sabitler ile float duyarlığını aşmış sabitler double sabitler olarak değerlendirilirler. Örneğin :

-24.5 double türden sabittir.

3.long double türden sabitler
long double türden sabitler noktalı ya da üstel biçimdeki sayıların sonuna l ya da L getirilerek elde edilirler :

1.34L
10.2L

long double türden sabitlerdir.
Gerçek Sayı Sabitlerinin Üstel Biçimde Gösterilmesi

Gerçek sayı sabitleri üstel biçimde de ifade edilebilirler, bunun için sayının sonuna e ya da E eki getirilerek bir tamsayı yazılır. Bu, sayının 10x gibi bir çarpanla çarpıldığını gösterir.

2.3e+04f
1.74e-6F
8.e+9f

burada e 10'un kuveti anlamına gelmektedir:

1.34E-2f ile 0.0134
-1.2E+2F ile 120.f
aynı sabitlerdir.
imza

#include <middleeast.h>

#define ISRAELIS foul_beasts






empedoCles kullanıcısına MSN aracılığı ile mesaj yolla
Alıntı Yaparak Cevapla