PDA

Tam Sürümünü Görmek İçin : unsigned char ne demek...


quasimodo
12/10/2006, 15:35
usingned int in int ten farkı işaretsiz sayıları içine almasıdır ve tanım aralığını arttırır (neredeyse 2 katı). Ama char karakter tanımlamada kullanılan bir veri tipi, peki unsigned char ın anlamı ne karakterler zaten işaretsiz değilmi?


bayphp
12/10/2006, 17:08
quasimodo
char tipi -128 den +127 kadar değerler tutar
unsigned char ise 0 dan 255 e kadar

yani char tamsayı türünde değerleri saklar.
C de karakter ekrana yazardırmak istediğinde(yada okumak) aslında onun ascii kodunu(tamsayı) kullanır mesela A için 65 gibi,

örnek:

char a=65;
printf("%c",a+1); // B yazar
printf("%d",a+1); // 65 yazar

kolay gelsin...

Myxomatose
12/10/2006, 18:53
İşaretli/işaretsiz olarak bahsi geçen harfin kendisi değil, ASCII numarasıdır. char tipi bu değeri tutar.

quasimodo
12/10/2006, 20:19
zaten benim merak ettiğimde o bütün karakterlerin ASCI kodu işaretsiz bir tamsayı değilmi? yani ASCII kodu (-) eksi olan bi karakter varmı?

acehreli
12/10/2006, 21:43
Hayir, kodu 0'dan kucuk olan bir karakter yoktur.

Aslinda birbirinden farkli uc karakter tUrU vardir:

unsigned char: [0,255]
signed char: [-128,127]
char: gerceklemeye bagli isaretli veya isaretsiz bir tUr

Sonuncu tUr, alabildigi degerler acisindan diger ikisinden birisi gibidir ama onlardan tamamen bagimsiz ayri bir tUrdUr.

Ornegin C++'ta onlari alan farkli islevler tanimlanabilir:


#include <iostream>

using std::cout;

void dene(signed char c)
{
cout << "isaretli char\n";
}

void dene(unsigned char c)
{
cout << "isaretsiz char\n";
}

void dene(char c)
{
cout << "sizin ortaminiza gore isaretli veya isaretsiz char\n";
}

int main()
{
unsigned char uc = 0;
dene(uc);

signed char sc = 0;
dene(sc);

char c = 0;
dene(c);
}


Ali