Char, short, int ve long türleri. Veri türleri ve değişkenler C cinsinden sayısal veri türleri

Bu kısa not, C++ programlama dilinin ana veri türleri ve bunların uygulanma özellikleri hakkında bilgi sağlar. Ayrıca kaydın sonunda bu türlerin değer aralıklarını içeren bir tablo bulunmaktadır.

Veri Türü Kavramı

Herhangi bir programın temel amacı verileri işlemektir. Farklı veri türleri farklı şekilde depolanır ve işlenir. Herhangi bir algoritmik dilde her sabitin, değişkenin, ifadenin veya işlevin belirli bir türü olmalıdır.

Veri türü şunları tanımlar:

  • bilgisayar belleğindeki verilerin dahili temsili;
  • bu tür niceliklerin alabileceği değerler kümesi;
  • Bu türdeki niceliklere uygulanabilecek işlemler ve işlevler.

Bu özelliklere dayanarak programcı, programda kullanılan her miktarın türünü gerçek nesneleri temsil edecek şekilde seçer. Gerekli bir tür bildirimi, derleyicinin çeşitli program yapılarının geçerliliğini kontrol etmesine olanak tanır. Değerin türü, verileri işlemek için kullanılacak makine talimatlarını belirler.

Tüm C++ dili türleri aşağıdakilere ayrılabilir: temel Ve kompozit . C++ dili altı tane tanımlar ana tam sayı, gerçek, karakter ve mantıksal değerleri temsil eden veri türleri. Bu türlere göre programcı bir açıklama girebilir kompozit türleri. Bunlara diziler, numaralandırmalar, işlevler, yapılar, referanslar, işaretçiler, birleşimler ve sınıflar dahildir.

C++'daki temel veri türleri

Temel (standart) veri türleri, aritmetik işlemlerde kullanılabildiği için sıklıkla aritmetik olarak adlandırılır. Ana türleri tanımlamak için aşağıdakiler tanımlanmıştır:

  1. int(int);
  2. karakter(karakter);
  3. wchar_t(geniş karakter);
  4. bool(boolean);
  5. kayan nokta(gerçek);
  6. çift ​​(çift duyarlıklı gerçek).

İlk dört türe tam sayı denir ( tüm ), son iki - kayan nokta türleri . Derleyicinin tam sayı değerlerini işlemek için oluşturduğu kod, kayan nokta değerlerine ilişkin koddan farklıdır.

Dört tane var tür belirtici , standart türlerin dahili temsilini ve değer aralığını açıklığa kavuşturmak:

  • kısa (kısa);
  • uzunca);
  • imzalanmış(imzalanmış);
  • imzasız.

Tamsayı türü (int)

İnt tipinin boyutu standart tarafından tanımlanmamıştır ancak bilgisayara ve derleyiciye bağlıdır. 16 bitlik bir işlemci için, bu tür değerler için 2 bayt, 32 bitlik bir işlemci için - 4 bayt tahsis edilir.

Tür adının önündeki kısa belirtici, derleyiciye işlemci kapasitesine bakılmaksızın sayı için 2 bayt ayrılması gerektiğini belirtir. Long belirteci, tamsayı değerinin 4 bayt kaplayacağı anlamına gelir. Yani 16 bitlik bir bilgisayarda eşdeğerler int ve short int'tir ve 32 bitlik bir bilgisayarda eşdeğerler int ve long int'tir.

Dahili temsil tamsayı tipinin değerleri - ikili koddaki bir tamsayı. İmzalı belirticiyi kullanırken sayının en anlamlı biti işaretli olarak yorumlanır (0 pozitif bir sayıdır, 1 negatif bir sayıdır). İmzasız belirtici yalnızca pozitif sayıların temsil edilmesine izin verir, çünkü en anlamlı bit sayı kodunun bir parçası olarak değerlendirilir. Dolayısıyla int tipinin değer aralığı belirticilere bağlıdır. IBM PC uyumlu bilgisayarlar için tamsayı türü değerlerinin çeşitli belirticilerle değer aralıkları, girişin sonundaki “Basit veri türlerinin değer aralıkları” tablosunda verilmiştir.

Varsayılan olarak tüm tamsayı türleri imzalı olarak kabul edilir; bu, imzalı belirticinin atlanabileceği anlamına gelir.

Bir programda bulunan sabitler türlerine göre şu veya bu türe atanır. Herhangi bir nedenden dolayı programcı bu türden memnun kalmazsa, gerekli türü L, l (uzun) ve U, u (işaretsiz) son eklerini kullanarak açıkça belirtebilir. Örneğin, 32L sabiti long tipinde olacak ve 4 byte yer kaplayacaktır. L ve U son eklerini aynı anda kullanabilirsiniz; örneğin 0x22UL veya 05Lu.

Not

Short int, long int,signed int ve unsigned int türleri sırasıyla short, long,signed ve unsigned olarak kısaltılabilir.

Karakter türü (karakter)

Bir karakter türünün değerine, belirli bir bilgisayar için karakter kümesindeki herhangi bir karakteri barındırmaya yetecek sayıda bayt tahsis edilir; bu, türün adını belirler. Genellikle bu 1 bayttır. Diğer tam sayı türleri gibi char türü de imzalı veya imzasız olabilir. İmzalı değerler -128 ila 127 aralığındaki değerleri saklayabilir. İmzasız belirtici kullanıldığında değerler 0 ila 255 arasında değişebilir. Bu, 256 karakterlik ASCII karakter kümesindeki herhangi bir karakteri depolamak için yeterlidir. Char türünün değerleri, belirtilen aralıkların sınırlarını aşmayan tam sayıları depolamak için de kullanılır.

Genişletilmiş karakter türü (wchar_t)

wchar_t türü, Unicode gibi kodlamak için 1 baytın yeterli olmadığı bir karakter kümesiyle çalışacak şekilde tasarlanmıştır. Bu türün boyutu uygulamaya bağlıdır; kural olarak kısa türüne karşılık gelir. wchar_t türündeki dize sabitleri L önekiyle yazılır, örneğin L»Gates».

Boole türü (bool)

Boolean değerleri yalnızca ayrılmış kelimeler olan true ve false değerlerini alabilir. False değerini temsil etmenin iç biçimi 0'dır (sıfır). Diğer herhangi bir değer doğru olarak yorumlanır. Bir tamsayı türüne dönüştürüldüğünde true 1 değerine sahiptir.

Kayan nokta türleri (float, double ve long double)

C++ standardı, gerçek değerleri depolamak için üç veri türünü tanımlar: float, double ve long double.

Kayan nokta veri türleri bilgisayar belleğinde tamsayı veri türlerinden farklı şekilde depolanır. Gerçek bir sayının iç temsili iki bölümden oluşur: mantis ve üs. IBM PC uyumlu bilgisayarlarda, kayan değer değerleri 4 bayt kaplar; bunlardan bir ikili rakam mantis işareti için, 8 biti üs için ve 23'ü mantis için ayrılmıştır. Mantis, 1,0'dan büyük ancak 2,0'dan küçük bir sayıdır. Mantisin ilk basamağı her zaman 1 olduğundan saklanmaz.

8 bayt kaplayan çift değerler için üs ve mantis için sırasıyla 11 ve 52 bit tahsis edilir. Mantisin uzunluğu sayının kesinliğini belirler ve üssün uzunluğu da aralığını belirler. Girişin sonundaki tablodan da görebileceğiniz gibi, float ve long int değerleri için ayrılan bayt sayısı aynı olduğundan, izin verilen değerlerinin aralıkları büyük ölçüde farklılık gösterir. iç temsil formu nedeniyle.

Double tipi adından önceki uzun belirtici, değeri için 10 bayt ayrıldığını gösterir.

Kayan nokta sabitleri varsayılan olarak double türündedir. F, f (float) ve L, l (long) son eklerini kullanarak bir sabitin türünü açıkça belirleyebilirsiniz. Örneğin, 2E+6L sabiti long double türünde, 1.82f sabiti ise float türünde olacaktır.

Platformlar arasında taşınabilir programlar yazmak için int türünün boyutu hakkında varsayımlarda bulunamazsınız. Bunu elde etmek için, sonucu türün bayt cinsinden boyutu olan sizeof işlemini kullanmanız gerekir. Örneğin, MS-DOS işletim sistemi için sizeof (int) 2 ile sonuçlanacaktır, ancak Windows 98 veya OS/2 için sonuç 4 olacaktır.

ANSI standardı, temel türler için değer aralıklarını belirtmez; yalnızca boyutları arasındaki ilişkiler tanımlanır, örneğin:

sizeof(float) ≤ slzeof(double) ≤ sizeof(long double)
sizeof(char) ≤ slzeof(short) ≤ sizeof(int) ≤ sizeof(long)

Not

Tamsayı türleri için izin verilen minimum ve maksimum değerler uygulamaya bağlıdır ve başlık dosyasında verilmiştir. (), gerçek türlerin özellikleri - dosyada (), yanı sıra numeric_limits sınıf şablonunda

geçersiz yazın

Listelenenlere ek olarak dilin ana türleri arasında void türü de bulunur ancak bu türün değer kümesi boştur. Değer döndürmeyen işlevleri tanımlamak, işlev bağımsız değişkenlerinin boş bir listesini belirtmek, işaretçiler için temel tür olarak ve tür değiştirme işlemlerinde kullanılır.

IBM PC uyumlu bilgisayarlar için C++ dilindeki basit veri türlerinin değer aralıkları

Q: IBM PC uyumlu bilgisayar terimi ne anlama geliyor?
C: IBM PC uyumlu bir bilgisayar, mimari olarak IBM PC, XT ve AT'ye yakın bir bilgisayardır. IBM PC uyumlu bilgisayarlar, Intel 8086 ile uyumlu mikroişlemciler üzerine kuruludur (ve bildiğiniz gibi, daha sonraki tüm Intel işlemciler 8086 ile geriye dönük olarak tamamen uyumludur). Aslında bunların neredeyse tamamı modern bilgisayarlardır.

Hesaplamaların hızı ve bellek miktarı bağlı olduğundan, programcıya belirli ekipmanın yeteneklerini en etkin şekilde kullanma fırsatı vermek amacıyla, veri temsilinin aralığı ve doğruluğu bakımından farklılık gösteren çeşitli tamsayı ve gerçek türler tanıtılmıştır. tür seçimi. Ancak bir bilgisayar türü için optimize edilmiş bir program diğer platformlara taşınabilir olmayabilir; dolayısıyla genel olarak veri türlerinin belirli özelliklerine güvenmekten kaçınmalısınız.

Tip Değer aralığı Boyut (bayt)
bool doğru ve yanlış 1
imzalı karakter -128 … 127 1
imzasız karakter 0 … 255 1
imzalı kısa int -32 768 … 32 767 2
imzasız kısa int 0 … 65 535 2
uzun int imzalı -2 147 483 648 … 2 147 483 647 4
imzasız uzun int 0 … 4 294 967 295 4
batmadan yüzmek 3.4e-38… 3.4e+38 4
çift 1.7e-308… 1.7C+308 8
uzun çift 3.4e-4932… 3.4e+4932 10

Gerçek tipler için tablo minimum ve maksimum değerlerin mutlak değerlerini gösterir.

Cevap:
  1. Tamsayı veri türleri:

short int, unsigned short int, int, unsigned int, long, unsigned long.

  1. Kayan nokta veri türleri (gerçek türlere karşılık gelir):

şamandıra, çift, uzun çift.

  1. Karakter veri türü:

char (imzalı char), unsigned char, wchar_t.

  1. Boole veri türü:

harika.

  1. Numaralandırılmış veri türü (Visual C++'da sunulmuştur):

Sıralama.

2. Tamsayı veri türlerini kullanmanın özellikleri nelerdir?

C++'da ana tamsayı veri türleri şunlardır: short int, unsigned short int, int, unsigned int, long (long int), unsigned long (unsigned long int).

Bu veri türleri bir dizi tamsayıdan gelen değerleri temsil eder. Örneğin:

2 -100 398

İmzasız önekle başlayan veri türleri yalnızca pozitif sayılar içerebilir.

Short int, unsigned short int türündeki veriler, int, unsigned int türündeki verilerin yarısı kadar bellek alanı kaplar.

Long, unsigned long türündeki veriler, int, unsigned int türündeki verilere göre iki kat daha fazla bellek alanı kaplar.

3. Bir programda tam sayı tipinde x isimli bir değişken nasıl tanımlanır?

Cevap:
intx; // işaretli tamsayı

Sonuç olarak değişken altında X 4 baytlık bir hafıza alanı tahsis edilecektir. Bir değişken için ayrılan belleğin boyutu bilgisayarın özelliklerine, işletim sisteminin türüne ve derleyici ayarlarına bağlıdır.

4. 239 sayısı tam sayı tipinde bir değişkene nasıl yazılır?

Bunu yapmak için '=' sembolüyle gösterilen atama operatörünü kullanın.

Cevap 1. Bir değişkene, açıklamasından sonra bir sayı girme.

intx; x = 239;

Cevap 2. Açıklaması sırasında bir değişkene bir sayı girme (ilk başlatma).

int x = 239;

5. Kayan noktalı veri türlerinin özellikleri nelerdir?

Kayan nokta veri türleri, bir dizi gerçek sayının değerlerini temsil etmenize olanak tanır. Örneğin:

8.35 -990.399 239.0.

C++ aşağıdaki temel kayan noktalı veri türlerine sahiptir: float, double, long double.

Double türündeki bir değişken, bilgisayar belleğinde float türündeki bir değişkene göre 2 kat daha fazla yer kaplar.

Ayrıca long double tip değişken, bilgisayar belleğinde double tip değişkene göre 2 kat daha fazla yer kaplar.

6. Kayan nokta değeri alan bir değişken nasıl tanımlanır?

Float, double, long double türlerinin değişkenlerini tanımlamaya bir örnek:

yüzer f; çift ​​d; uzun çift ld;

7. Kayan noktalı bir değişkene sayısal değerler nasıl yazılır?

Kayan nokta değişkenlerine sayısal veri girme örneği:

kayan nokta f = -9928,45; // ilk başlatma çift ​​d; uzun çift ld; d = 0,445332; // atama operatörü ld = 3892923898239.030903; // atama operatörü

8. Float değişkeni int türüne nasıl dönüştürülür?

Bunu yapmak için tip döküm işlemi kullanılır. Parantez içinde, cast'ın yayınlanacağı türün adını belirtmeniz gerekir.

şamandıra a; int b; bir = 8,457; b = (int)a; // b = 8

Tür dönüştürme işlemlerini kullanırken, bilgisayarın belleğinde daha az yer kaplayan türlere uygulanan kısıtlamaları dikkate almanız gerekir.

Örneğin, short int türündeki bir değişken, float veya double türündeki değişkenlerden daha küçük bir sayı aralığını temsil edebilir. Aşağıdaki listede short int türündeki bir değişkendeki değer taşmaktadır:

kısa int i; yüzer f; f = 3990099,8; ben = (int )f; // i = -7597 - taşma

9. Bir değişkeni int türünden double türüne nasıl dönüştürebilirim?

İnt'den double'a dönüştürme örneği:

int ben; çift ​​d; ben = 982; d = (çift)i; // d = 982,0

10. Karakter verisini (karakter verisini) bir programda kullanmanın özellikleri nelerdir?

Char türündeki veriler klavyeden girilen kodun karakter değerini temsil eder. Sembol kodu bir tamsayıdır.

Örneğin 'f' karakterinin kodu 102'dir.

Karakter kodunu hesaplayan bir kod parçası:

int kodu; karakter sembolü; sembol = "f"; kod = (int)sembol; // kod = 102

Char türündeki veriler aynı tamsayılardır. Char türündeki veriler bilgisayar belleğinde 1 bayt yer kaplar.

Karakter-kod ilişkisi Windows sembol tablosunda bulunur. 0'dan 127'ye kadar kodlara sahip karakterler ayrılmış BIOS karakterleridir. En sık kullanılan sembolleri, sayısal sembolleri ve Latin sembollerini içerirler. Bu karakterler değiştirilemez.

128'den 255'e kadar kodları olan karakterler, Windows işletim sisteminin kurulu olduğu bilgisayarın belirli bir alfabesine bağlı bölgesel karakterlerdir.

11. bool veri tipini (mantıksal tip) kullanmanın özellikleri nelerdir?

bool türündeki değişkenler yalnızca iki değer alabilir:

doğru gerçek,

yanlış - yanlış.

Bu değişkenler Boole ifadelerini test etmek için kullanılır. True'nun sayısal değeri 1'dir. False'ın sayısal değeri 0'dır.

True ve false sayısal değerlerini tanımlayan kod pasajı:

sonuç; bool b; sonuç = (int)true; // sonuç = 1 b = yanlış; sonuç = (int )b; // sonuç = 0

int ve float türlerini bool'a dönüştüren kod pasajı:

int ben; yüzer f; bool b; ben = 6; b = (bool)i; // b = Doğru f = 0,0; b = (bool)f; // b = Yanlış

12. Belirli bir türdeki değişkenin kapladığı hafızanın boyutu nasıl belirlenir?

Bunun için sizeof() işlemi kullanılır.

Bazı veri türlerinin boyutunu tanımlayan bir kod pasajı:

int d; d = sizeof(karakter); // d = 1 d = sizeof(unsigned int); // d = 4 d = sizeof(float); // d = 4 d = sizeof(çift); // d = 8

13. Farklı türdeki değişkenler nasıl başlatılır?

int d = 28; kayan nokta z = ( kayan nokta )2,85; karakter c = "k"; String ^s = "Merhaba!" ; çift ​​r = -8,559;

14. Belirli bir türdeki değişkenin izin verilen maksimum (izin verilen minimum) değeri nasıl belirlenir?

Belirli bir türdeki değişkenin maksimum veya minimum değerini belirlemek için .NET Framework kitaplığı MaxValue ve MinValue özelliklerini kullanır.

Farklı türdeki değişkenlerin sınır değerlerinin belirlenmesine örnekler.

int türündeki değişkenler için:

// int'yi yaz int ben; uzun MaxInt; uzun MinInt; MaxInt = (long )i.MaxValue; // MaksInt = 2147483647 MinInt = (long )i.MinValue; // MinInt = -2147483648

short int türündeki değişkenler için:

// kısa int yazın kısa int si; int MaxInt; int MinInt; MaxInt = (int )si.MaxValue; // MaksInt = 32767 MinInt = (int )si.MinValue; // MinInt = -32768

unsigned int türündeki değişkenler için:

// imzasız int yazın imzasız int kullanıcı arayüzü; imzasız int MaxInt; imzasız int MinInt; MaxInt = ui.MaxValue; // MaksInt = 4294967295 MinInt = ui.MinValue; // MinInt = 0

Kayan değişkenler için:

// kayan nokta türü yüzer f; şamandıra MaxF; kayan MinF; MaksF = f.MaksDeğer; // MaksF = 3,402823E+38 MinF = f.MinValue; // MinF = -3,402823E+38

Double türündeki değişkenler için:

// çift yaz çift ​​d; çift ​​MaxD; çift ​​MinD; Maksimum = d.MaksimumDeğer; // Maksimum = 1,79769313486232E+308 Min = d.MinValue; // Min = -1,79769313486232E+308

Char türündeki değişkenler için:

// char yazın karakter c; int MaxC; int MinC; Maks = (int )c.MaxValue; // Maksimum = 127 Min = (int )c.MinValue; // Min = -128

15. Enum tipini kullanmanın özellikleri nelerdir?

Enum türü bir numaralandırma veri türüdür. Tam sayı değer kümeleri için anımsatıcı değerleri belirtir. Her anımsatıcı değerin belirli bir içeriği vardır ve bir tamsayı ile temsil edilir.

Yılın aylarını temsil etmek için enum türünün kullanılmasına bir örnek:

enum ayları (Ocak, Şubat, Mart, Nisan, Mayıs, Haziran, Temmuz, Ağustos, Eylül, Ekim, Kasım, Aralık) mn; mn = Ocak; // mn = 0 mn = Mart; // mn = 2 mn = Eylül; // mn = 8

Aşağıdaki örnek, enum ay türünde mn adlı bir değişkeni açıklamaktadır. Aylara (Ocak, Şubat,…) ilişkin anımsatıcı değerler 0’dan (0, 1, 2,…) başlar. Ocak anımsatıcısı 0 tamsayı değeridir, Şubat anımsatıcısı 1 tamsayıdır vb.

Bu nedenle, kaynak kodun daha iyi anlaşılması için, numaralandırma türü kullanılarak program metninde anımsatıcılar kullanılabilir.

Bunu şu şekilde de yazabilirsiniz:

mn = (ay sayısı)2; // mn = Mart mn = (ay sayısı)11; // mn = Aralık

16. Türün özellikleri nelerdir?geçersiz programlardaC++ ?

Geçersiz veri türü aşağıdaki durumlarda kullanılır:

  • herhangi bir değer döndürmeyen bir işlevi tanımlamanız gerekiyorsa (örneğe bakın);
  • Parametre almayan bir işlevi tanımlamanız gerekiyorsa (örneğe bakın).

Örnek. MyFun() hiçbir değer döndürmeyen ( void türünü döndüren) ve hiçbir parametre almayan parametresiz bir işlevdir.

public : void MyFun(geçersiz) { // fonksiyon gövdesi // ... geri dönmek; // değer döndürmeyen bir fonksiyondan dönüş } // programdan bir fonksiyon çağırıyoruz ... Eğlencem(); ...

17. Bir tür değişkeni bildirmek mümkün müdür?geçersiz bir programda mı?

void türü bir değerle ilişkili olmadığından bu mümkün değildir.

void türünde bir değişken bildirmek, aşağıdaki mesajla birlikte bir derleme hatasına neden olur:

"Geçersiz türünün yasa dışı kullanımı"

18. Türün özellikleri nelerdir?ne karakter_ T VGörsel C++ ?

Char türündeki değişkenler (önceki paragraflara bakın) 8 bitlik ASCII karakterleri depolamak için kullanılır.

wchar_t türü, büyük karakter kümelerinin parçası olan karakterleri depolamak için kullanılır. Örneğin Çin alfabesinde çok sayıda karakter bulunur. Çince karakterlerin tamamını temsil etmek için 8 rakam yeterli değildir. Bu nedenle programı uluslararası pazarda kullanmanız gerekiyorsa char tipini wchar_t ile değiştirmeniz tavsiye edilir.

Örnek wchar_t türünü kullanarak.

... wchar_tt; // t değişkeni için 2 bayt bellek ayrıldı t = "s"; ...

Tamsayı tipi char bellekte 1 bayt (8 bit) yer kaplar ve ikili olarak 2^8 değeri = 256 ifade etmenizi sağlar. Char türü hem pozitif hem de negatif değerler içerebilir. Değer aralığı -128 ile 127 arasındadır.

uçar

uchar tamsayı türü de char türü gibi bellekte 1 bayt yer kaplar, ancak ondan farklı olarak uchar yalnızca pozitif değerler için tasarlanmıştır. Minimum değer sıfır ve maksimum değer 255'tir. uchar tipi adındaki ilk u, unsigned'ın kısaltmasıdır.

kısa

Tamsayı kısa türü 2 bayt (16 bit) boyutundadır ve buna göre 2 üssü 16: 2^16 = 65,536'ya eşit bir değer kümesini ifade etmenize olanak tanır. imzalı ve hem pozitif hem de negatif değerler içeren aralık değerleri -32.768 ile 32.767 arasındadır.

kısa

İmzasız kısa türü de 2 bayt boyutunda olan ushort'tur. Minimum değer 0, maksimum değer 65.535'tir.

int

Tamsayı tipi int'nin boyutu 4 bayttır (32 bit). Minimum değer -2,147,483,648, maksimum değer ise 2,147,483,647'dir.

uint

İşaretsiz tamsayı türü uint 4 baytlık bellek kaplar ve 0'dan 4,294,967,295'e kadar tamsayı değerlerini ifade etmenizi sağlar.

uzun

Tamsayı tipi long'un boyutu 8 bayttır (64 bit). Minimum değer -9,223,372,036,854,775,808, maksimum değer ise 9,223,372,036,854,775,807'dir.

uzun

Ulong tamsayı türü de 8 bayt yer kaplar ve 0'dan 18,446,744,073,709,551,615'e kadar değerleri saklayabilir.

Örnekler:

karakter ch= 12;
kısa sh=- 5000 ;
int in= 2445777 ;

İmzasız tamsayı türleri negatif değerleri depolamak üzere tasarlanmadığından, negatif bir değer ayarlamaya çalışmak beklenmeyen sonuçlara yol açabilir. Bunun gibi masum bir senaryo sonsuz bir döngüye yol açacaktır:

Doğru yol şöyle olacaktır:

Sonuç:

Kanal= -128 u_kanal= 128
kanal= -127 u_kanal= 129
kanal= -126 u_kanal= 130
kanal= -125 u_kanal= 131
kanal= -124 u_kanal= 132
kanal= -123 u_kanal= 133
kanal= -122 u_kanal= 134
kanal= -121 u_kanal= 135
kanal= -120 u_kanal= 136
kanal= -119 u_kanal= 137
kanal= -118 u_kanal= 138
kanal= -117 u_kanal= 139
kanal= -116 u_kanal= 140
kanal= -115 u_kanal= 141
kanal= -114 u_kanal= 142
kanal= -113 u_kanal= 143
kanal= -112 u_kanal= 144
kanal= -111 u_kanal= 145
...

Veri tipleri

C#'ta veri türleri özellikle önemlidir çünkü türü kesin olarak belirlenmiş bir dildir. Bu, tüm işlemlerin derleyici tarafından sıkı tip kontrolüne tabi olduğu ve yasa dışı işlemlerin derlenmediği anlamına gelir. Sonuç olarak, sıkı tip kontrolü hataları ortadan kaldırır ve programların güvenilirliğini artırır. Tür denetimini zorunlu kılmak için tüm değişkenlerin, ifadelerin ve değerlerin belirli bir türde olması gerekir. Bu programlama dilinde “tipsiz” değişken diye bir şey yoktur. Ayrıca değerin türü, üzerinde yapılabilecek işlemleri de belirler. Bir veri türü için yasal olan bir işlem, bir başka veri türü için geçerli olmayabilir.

C#'ta yerleşik veri türlerinin iki genel kategorisi vardır: değer türleri Ve referans türleri. Değişkenin içeriği bakımından farklılık gösterirler. Kavramsal olarak ikisi arasındaki fark, değer türünün verileri doğrudan depolaması, referans türünün ise bir değere referansı saklamasıdır.

Bu türler hafızanın farklı konumlarında depolanır: değer türleri yığın olarak bilinen bir alanda saklanır ve referans türleri yönetilen yığın olarak bilinen bir alanda depolanır.

Hadi bir bakalım değer türleri.

Tam sayı türleri

C# dokuz tam sayı türünü tanımlar: char, byte, sbyte, short, ushort, int, uint, long ve ulong. Ancak char türü öncelikle karakterleri temsil etmek için kullanılır ve bu nedenle ayrı olarak ele alınır. Geriye kalan sekiz tam sayı türü sayısal hesaplamalar içindir. Aşağıda sayı aralıkları ve bit derinlikleri verilmiştir:

C# Tamsayı Türleri
Tip CTS yazın Bit boyutu Menzil
bayt Sistem.Byte 8 0:255
bayt System.SByte 8 -128:127
kısa System.Int16 16 -32768: 32767
kısa System.UInt16 16 0: 65535
int System.Int32 32 -2147483648: 2147483647
uint System.UInt32 32 0: 4294967295
uzun System.Int64 64 -9223372036854775808: 9223372036854775807
uzun System.UInt64 64 0: 18446744073709551615

Yukarıdaki tablonun gösterdiği gibi, C#, çeşitli tam sayı türlerinin hem işaretli hem de işaretsiz değişkenlerini tanımlar. İşaretli tam sayı türleri, tam sayının en anlamlı bitini yorumlama şekli bakımından işaretsiz benzerlerinden farklılık gösterir. Bu nedenle, eğer bir program işaretli bir tamsayı değeri belirtirse, C# derleyicisi işaret bayrağı olarak tamsayının en anlamlı bitini kullanan kod üretecektir. İşaret bayrağı 0 ise sayı pozitif, 1 ise negatif kabul edilir.

Negatif sayılar neredeyse her zaman ikinin tümleyeni yöntemiyle temsil edilir; bu yöntemde, negatif sayının tüm ikili rakamları önce ters çevrilir ve ardından bu sayıya 1 eklenir.

Muhtemelen programlamada en yaygın tam sayı türü int türü. int türündeki değişkenler genellikle döngü kontrolü, dizi indeksleme ve genel amaçlı matematiksel hesaplamalar için kullanılır. İnt türünden daha geniş bir gösterim aralığına sahip bir tamsayı değerine ihtiyaç duyduğunuzda, bu amaç için kullanılabilecek çok sayıda başka tamsayı türü vardır.

Dolayısıyla, değerin işaretsiz olarak saklanması gerekiyorsa, bunun için uint tipi, büyük imzalı değerler için - uzun tip ve büyük imzasız değerler için - yazın uzun. Örnek olarak aşağıda Dünya'nın Güneş'e olan mesafesini santimetre cinsinden hesaplayan bir program verilmiştir. Bu kadar büyük bir değeri saklamak için long değişkeni kullanılır:

Sistemin Kullanımı; System.Collections.Generic'i kullanarak; System.Linq'i kullanarak; System.Text'i kullanarak; namespace ConsoleApplication1 ( class Program ( static void Main(string args) ( long result; const long km = 149800000; // km cinsinden mesafe. result = km * 1000 * 100; Console.WriteLine(result); Console.ReadLine(); )) ))

Tüm tamsayı değişkenlerine ondalık veya onaltılık gösterimlerde değerler atanabilir. İkinci durumda, 0x öneki gereklidir:

Uzun x = 0x12ab;

Bir tamsayı değerinin int, uint, long veya ulong türünde olup olmadığı konusunda herhangi bir belirsizlik varsa, o zaman varsayılan int kabul edilir. Bir değerin başka hangi tamsayı türüne sahip olması gerektiğini açıkça belirtmek için bir sayıya aşağıdaki karakterler eklenebilir:

Uint ui = 1234U; uzun l = 1234L; ulong ul = 1234UL;

U ve L de küçük harfle yazılabilir, ancak küçük L harfi görsel olarak 1 (bir) sayısıyla kolayca karıştırılabilir.

Kayan Nokta Türleri

Kayan nokta türleri, sayıları kesirli kısımlarla temsil etmenize olanak tanır. C#'ta iki tür kayan nokta veri türü vardır: batmadan yüzmek Ve çift. Sırasıyla tek ve çift duyarlıklı sayısal değerleri temsil ederler. Dolayısıyla, kayan nokta tipinin genişliği 32 bittir ve bu, yaklaşık olarak 5E-45'ten 3,4E+38'e kadar olan sayıların temsil aralığına karşılık gelir. Ve double tipin genişliği 64 bittir, bu da yaklaşık olarak 5E-324'ten 1.7E+308'e kadar olan sayıların temsil aralığına karşılık gelir.

Float veri türü, daha az hassasiyet gerektiren daha küçük kayan nokta değerleri için tasarlanmıştır. Double veri türü, kayan veri türünden daha büyüktür ve daha yüksek bir hassasiyet derecesi sunar (15 bit).

Kaynak kodunda tamsayı olmayan bir değer sabit olarak kodlanmışsa (örneğin, 12.3), derleyici genellikle çift değerin amaçlandığını varsayar. Değerin kayan noktalı sayı olarak belirtilmesi gerekiyorsa, buna F (veya f) karakterini eklemeniz gerekir:

Kayan f = 12,3F;

Ondalık veri türü

Yüksek hassasiyetli kayan noktalı sayıları temsil etmek için bir ondalık tür de sağlanmıştır. ondalık Finansal hesaplamalarda kullanılmak üzere tasarlanmıştır. Bu tür, 1E-28 ile 7,9E+28 arasında değişen sayısal değerleri temsil etmek için 128 bit genişliğe sahiptir. Muhtemelen normal kayan nokta aritmetiğinin ondalık yuvarlama hatalarına eğilimli olduğunun farkındasınızdır. Bu hatalar, sayıların 28 (ve bazen 29) ondalık basamağa kadar temsil edilmesine olanak tanıyan ondalık türü kullanılarak ortadan kaldırılır. Bu veri türü, yuvarlama hatası olmadan ondalık değerleri temsil edebildiğinden, özellikle finansla ilgili hesaplamalar için kullanışlıdır:

Sistemin Kullanımı; System.Collections.Generic'i kullanarak; System.Linq'i kullanarak; System.Text'i kullanarak; namespace ConsoleApplication1 ( class Program ( static void Main(string args) ( // *** *** // *** sabit getiri oranı*** ile bir yatırımın maliyetinin hesaplanması*** ondalık para, yüzde; int i; sabit bayt yılı = 15 ; para = 1000,0m; yüzde = 0,045m; for (i = 1; i

Bu programın sonucu şöyle olacaktır:

Semboller

C#'ta karakterler, C++ gibi diğer birçok programlama dilinde olduğu gibi 8 bitlik kodla değil, 16 bitlik kodla temsil edilir. Unicode. Unicode'un karakter seti o kadar geniştir ki dünyadaki hemen hemen her doğal dildeki karakterleri kapsar. İngilizce, Fransızca ve Almanca da dahil olmak üzere pek çok doğal dil nispeten küçük alfabelere sahipken, Çince gibi diğer bazı diller 8 bitlik kodla temsil edilemeyen oldukça büyük karakter kümeleri kullanır. Bu sınırlamanın üstesinden gelmek için C# şunu tanımlar: karakter yazın 0 ila 65,535 arasında değişen işaretsiz 16 bitlik değerleri temsil eder. Ancak standart 8 bitlik ASCII karakter seti, Unicode'un 0 ila 127 arasında değişen bir alt kümesidir. Bu nedenle, ASCII karakterler C#'ta hala geçerlidir.

Son güncelleme: 17.09.2017

Her değişkenin belirli bir türü vardır. Ve bu tip bir değişkenin hangi değerlere sahip olabileceğini, üzerinde hangi işlemlerin yapılabileceğini, bellekte kaç byte kaplayacağını belirler. Aşağıdaki temel veri türleri C++ dilinde tanımlanmıştır:

    bool : boole tipi. İki değerden birini alabilir: doğru ve yanlış. Bu türün bellek alanı tam olarak tanımlanmamıştır.

    char : Tek bir ASCII karakterini temsil eder. Bellekte 1 bayt (8 bit) yer kaplar. -128'den 127'ye veya 0'dan 255'e kadar herhangi bir değeri saklayabilir

    Signed char : Tek bir karakteri temsil eder. Bellekte 1 bayt (8 bit) yer kaplar. -128'den 127'ye kadar herhangi bir değeri saklayabilir

    unsigned char : Tek bir karakteri temsil eder. Bellekte 1 bayt (8 bit) yer kaplar. 0'dan 255'e kadar herhangi bir değeri saklayabilir

    wchar_t : Geniş bir karakteri temsil eder. Windows'ta 2 bayt (16 bit) bellek kaplar, Linux'ta 4 bayt (32 bit) alır. 0 ila 65.535 (2 bayt için) veya 0 ila 4.294.967.295 (4 bayt için) aralığında herhangi bir değeri saklayabilir

    char16_t : Tek bir Unicode karakteri temsil eder. Bellekte 2 bayt (16 bit) yer kaplar. 0'dan 65.535'e kadar herhangi bir değeri saklayabilir

    char32_t : Tek bir Unicode karakteri temsil eder. Bellekte 4 bayt (32 bit) yer kaplar. 0'dan 4.294.967.295'e kadar herhangi bir değeri saklayabilir

    short : –32768 ila 32767 aralığındaki bir tamsayıyı temsil eder. 2 bayt (16 bit) bellek kaplar.

    Bu tür aynı zamanda kısa int, imzalı kısa int, imzalı kısa gibi eşanlamlılara da sahiptir.

    işaretsiz kısa: 0 ila 65535 aralığındaki bir tam sayıyı temsil eder. 2 bayt (16 bit) bellek kaplar.

    Bu türün aynı zamanda unsigned short int ile eşanlamlısı da vardır.

    int: bir tamsayıyı temsil eder. İşlemci mimarisine bağlı olarak 2 byte (16 bit) veya 4 byte (32 bit) yer kaplayabilir. Buna göre sınır değerleri aralığı da –32768 ila 32767 (2 bayt ile) veya –2,147,483,648 ila 2,147,483,647 (4 bayt ile) arasında değişebilir. Ancak her durumda boyut, kısa türün boyutundan büyük veya ona eşit, uzun türün boyutundan küçük veya ona eşit olmalıdır.

    Bu türün eşanlamlıları Signed int ve Signed'dir.

    unsigned int : Pozitif bir tam sayıyı temsil eder. İşlemci mimarisine bağlı olarak 2 bayt (16 bit) veya 4 bayt (32 bit) kaplayabilir ve bu nedenle sınır değerleri aralığı 0'dan 65535'e (2 bayt için) veya 0 ila 4,294,967,295 (4 bayt için).

    unsigned bu türün eşanlamlısı olarak kullanılabilir

    long : −2,147,483,648 ila 2,147,483,647 aralığındaki bir tamsayıyı temsil eder. 4 bayt (32 bit) bellek kaplar.

    Bu türün aynı zamanda long int,signed long int vesigned long gibi eşanlamlıları da vardır.

    unsigned long: 0 ila 4,294,967,295 aralığındaki bir tam sayıyı temsil eder. 4 bayt (32 bit) bellek kaplar.

    Eşanlamlısı unsigned long int'dir.

    long long: −9,223,372,036,854,775,808 ila +9,223,372,036,854,775,807 aralığındaki bir tam sayıyı temsil eder. Tipik olarak 8 bayt (64 bit) bellek kaplar.

    Eşanlamlıları long long int,signed long long int vesigned long long'dur.

    unsigned long long : 0 ila 18,446,744,073,709,551,615 aralığındaki bir tamsayıyı temsil eder. Tipik olarak 8 bayt (64 bit) bellek kaplar.

    unsigned long long int'nin eşanlamlısı var mı?

    float : +/- 3,4E-38 ila 3,4E+38 aralığında tek duyarlıklı kayan noktalı gerçek sayıyı temsil eder. Bellekte 4 bayt (32 bit) yer kaplar

    double : +/- 1,7E-308 ila 1,7E+308 aralığında çift duyarlıklı kayan noktalı gerçek sayıyı temsil eder. Bellekte 8 bayt (64 bit) yer kaplar

    long double : En az 8 baytlık (64 bit) çift duyarlıklı kayan noktalı gerçek sayıyı temsil eder. Kullanılan belleğin boyutuna bağlı olarak geçerli değerlerin aralığı değişebilir.

    void: değersiz yazın

Böylece void dışındaki tüm veri türleri üç gruba ayrılabilir: karakter (char, wchar_t, char16_t, char32_t), tamsayı (short, int, long, long long) ve kayan noktalı sayı türleri (float, double, long double).

Karakter türleri

Uygulamadaki karakterleri temsil etmek için kullanılan türler char, wchar_t, char16_t ve char32_t'dir.

Birkaç değişken tanımlayalım:

Karakter c = "d"; wchar_td="c";

Bir char değişkeni, değerini tek tırnak içinde bir karakter olarak alır: char c ="d" . Ayrıca listede yukarıda belirtilen aralıktan bir sayı da atayabilirsiniz: char c = 120 . Bu durumda c değişkeninin değeri ASCII karakter tablosunda 120 koduna sahip karakter olacaktır.

Konsola wchar_t karakterlerinin çıktısını almak için std::cout değil std::wcout akışını kullanmanız gerektiğini düşünmeye değer:

#katmak int main() ( char a = "H"; wchar_t b = "e"; std::wcout<< a << b << "\n"; return 0; }

Bu durumda std::wcout akışı hem char hem de wchar_t ile çalışabilir. Ve wchar_t değişkeninin std::cout akışı, karakter yerine sayısal kodunun çıktısını verecektir.

C++11 standardı, Unicode kullanmaya yönelik char16_t ve char32_t türlerini ekledi. Ancak bu türlerle çalışmaya yönelik iş parçacıkları henüz işletim sistemi düzeyinde uygulanmamıştır. Bu nedenle, bu türdeki değişkenlerin değerlerini konsolda görüntülemeniz gerekiyorsa, değişkenleri char veya wchar_t türlerine dönüştürmeniz gerekir:

#katmak int main() ( char a = "H"; wchar_t b = "e"; char16_t c = "l"; char32_t d = "o"; std::cout<< a << (char)b << (char)c << (char)d << "\n"; return 0; }

Bu durumda, çıktı alınırken değişkenlerin önünde, b, c ve d değişkenlerinin değerlerinin char türüne dönüştürüldüğü ve çıktı olarak alınabildiği char - (char) türüne bir dönüştürme işlemi gelir. std::cout akışını kullanan konsol.

Tam sayı türleri

Tamsayı türleri şu türlerle temsil edilir: short, unsigned short, int, unsigned int, long, unsigned long, long long ve unsigned long long:

Kısa a = -10; işaretsiz kısa b= 10; int c = -30; imzasız int d = 60; uzun e = -170; işaretsiz uzun f = 45; uzun uzun g = 89;

Kayan noktalı sayı türleri

Kayan nokta ve kesirli sayı türleri float, double ve long double ile temsil edilir:

Float a = -10,45; çift ​​b = 0,00105; uzun çift c = 30,890045;

Veri türü boyutları

Yukarıdaki listede her tip için bellekte kapladığı boyut gösterilmektedir. Ancak derleyici geliştiricilerin, bilgisayarın donanım özelliklerine bağlı olarak türler için boyut sınırlarını bağımsız olarak seçebileceklerini belirtmekte fayda var. Standart yalnızca olması gereken minimum değerleri belirler. Örneğin, int ve short türleri için minimum değer 16 bit, long türü için - 32 bit, long double türü için. Bu durumda long tipinin boyutu int tipinin boyutundan, int tipinin boyutu short tipinin boyutundan küçük olmamalı, long double tipinin boyutu ise iki katından büyük olsun. Örneğin, Windows için g++ derleyicisi uzun çiftler için 12 bayt kullanır ve Visual Studio'da yerleşik olarak bulunan ve ayrıca Windows altında çalışan derleyici uzun çiftler için 8 bayt kullanır. Yani aynı platformda bile farklı derleyiciler belirli veri türlerinin boyutlarına farklı yaklaşımlara sahip olabilir. Ancak genel olarak veri türleri açıklanırken yukarıda belirtilen boyutlar kullanılmaktadır.

Ancak belirli bir türün boyutunu tam olarak bilmenin gerekli olduğu durumlar vardır. Bunun için C++, değişkenin kapladığı belleğin boyutunu bayt cinsinden döndüren sizeof() operatörüne sahiptir:

#katmak int main() ( long double sayı = 2; std::cout<< "sizeof(number) =" << sizeof(number); return 0; }

g++ ile derlerken konsol çıktısı:

sizeof(sayı) = 12

Aynı zamanda değişkenleri tanımlarken bir değişkenin değerinin, türüne göre belirlenen sınırların dışına çıkmaması gerektiğini anlamak önemlidir. Örneğin:

İmzasız kısa numara = -65535;

G++ derleyicisi bu satırla bir program derlerken -65535 değerinin unsigned short türü için geçerli değerler aralığında olmadığını belirten bir hata üretecek ve kesilecektir.

Visual Studio'da derleme hatasız devam edebilir, ancak sayı değişkeni 2 değerini alır; bu, -65535 sayısının imzasız bir kısa türe dönüştürülmesinin sonucudur. Yani sonuç yine tam olarak beklendiği gibi olmayacaktır. Bir değişkenin değeri, belirli bir türe göre yorumlanan, bellekteki bitlerin toplamıdır. Ve farklı türler için aynı bit seti farklı şekilde yorumlanabilir. Bu nedenle bir değişkene değer atarken belirli bir türe ait değer aralıklarının dikkate alınması önemlidir.

otomatik belirleyici

Bazen ifadenin türünü belirlemek zor olabilir. Ve en son standartlara göre, derleyicinin nesnenin türünü çıkarmasına izin verebilirsiniz. Ve bunun için otomatik belirtici kullanılır. Ayrıca, eğer bir değişkeni auto belirticiyle tanımlarsak, bu değişkenin bir değerle başlatılması gerekir:

Otomatik numara = 5;

Atanan değere bağlı olarak derleyici değişkenin türünü çıkaracaktır. Otomatik belirticiye sahip başlatılmamış değişkenlere izin verilmez.



Bir hata bulursanız lütfen bir metin parçası seçin ve Ctrl+Enter tuşlarına basın.