In C programlama dilinin , değişken türleri veri öğeleri depolamak semantik ve özellikleridir. Bellek konumlarının veya değişkenlerinin bildirimleri olarak dil sözdiziminde ifade edilirler . Değişken türleri ayrıca işlem türlerini veya veri öğelerini işleme yöntemlerini de belirler.
C dili, tamsayı ve gerçek türler gibi temel aritmetik türleri ve dizi ve bileşik türleri oluşturmak için sözdizimi sağlar. Başlıklar ( başlıklar arasında İngilizce) standart C kütüphanesinde yoluyla kullanım için başlıklarına # include belirli donanım üzerinde dillerinin uygulanması bakılmaksızın böyle bir depolama tam boyutu sağlanması gibi ek özelliklere sahiptir destek türleri, tanımları içeren platformlar.
Tam liste: İngilizce sayfaya bakın .
NOT : Her tür tarafından döndürülen değerlerin boyutu bilgisayar donanımına bağlı olarak değişebilir: bu nedenle, türün değeri int(genellikle 4 baytta) bazı modellerde 8 bayt olabilir. Bir türün boyutunu bulmak için operatörü kullanırız sizeof() :
printf("taille de int : %d", sizeof(int));örneğin şunu döndürür :
taille de int : 4Kesin boyutlara sahip olmak için dinamik bellek ayıracağız . Aşağıda sunulan değerlerin boyutları bu nedenle her durumda geçerli değildir .
C dili, char , int , float ve double olmak üzere dört temel aritmetik tanımlayıcı ve bunların imzalı , işaretsiz, kısa ve uzun değiştirilmiş sürümlerini sağlar . Aşağıdaki tablo kombinasyonları ve her bildirim için izin verilen değer aralığını listeler.
Tür | Kısa açıklama | Eğitmenler |
---|---|---|
char | Bir makinenin adreslenebilir en küçük birimi, temel karakterleri içerebilir. İmzalanabilen veya imzalanmayan bir tamsayı değeridir. | %c |
signed char | En az sayıları [−127; +127]. | %c |
unsigned char | En azından [0; 255]. | %c |
short short int signed short signed short int |
En az sayıları temsil edebilen minimum, kısa, tam sayı ve işaretli tam sayı türü [−32,767; +32 767]. | %i |
unsigned short unsigned short int |
Standart işaretsiz tamsayı türüyle aynı minimum, kısa tamsayı türü. | %u |
int signed signed int |
En az sayıları temsil edebilen standart işaretli tam sayı türü [−32,767; +32 767]. | %i veya %d |
unsigned unsigned int |
Standart tamsayı türüyle aynı, ancak işaretsiz, en azından [0; 65,535]. | %u |
long long int signed long signed long int |
Uzun tam sayı tipi, işaretli ve tam sayı, en az sayıları temsil edebilen [−2 147 483 647; +2 147 483 647]. | %li ou %ld |
unsigned long unsigned long int |
En azından [0; 4,294,967,295]. | %lu |
long long long long int signed long long signed long long int |
Uzun uzun tam sayı tipi, işaretli ve tam sayı, en az sayıları temsil edebilen [−9 223 372 036 854 775 807; +9 223 372 036 854 775 807]. | %lli |
unsigned long long unsigned long long int |
Aynı tip uzun tamsayı uzun fakat işaretsiz, en azından [0; +18 446 744 073 709 551 615]. | %llu |
float | Kayan tip, kayan noktalı gerçek nokta, tek hassasiyetle söylenir.
Çoğu sistemde dört bayt (32 bit) olarak kodlanır. Aritmetik hesaplamalar için gerekli, Ek F "IEC 60559 kayan nokta aritmetiği". |
%f %F
%g %G %e %E %a %A |
doubledouble float | İdem yüzer tip, ancak çift hassasiyette.
Sekiz 64 bit bayt olarak kodlanmıştır. |
%lf %lF
%lg %lG %le %lE %la %lA |
long doublelong double float | Idem yüzer tip ancak dört kat hassasiyette.
On altı bayta (128 bit) kodlanmıştır. |
%Lf %LF
%Lg %LG %Le %LE %La %LA |
C99 (İngilizce) boole türü eklendi _Bool (doğru / yanlış). Ek olarak, başlık bu tür için uygun bir takma ad olarak <stdbool.h>tanımlanır boolve ayrıca trueve için makrolar sağlar false. _Boolbir istisna dışında normal bir tamsayı türüne benzer şekilde çalışır: _Bool0 olmayan (yanlış) tüm atamalar 1 (doğru) olarak saklanır. Bu davranış , örtük küçülme dönüşümlerinde tam sayı taşmalarını önlemek için mevcuttur . Örneğin, aşağıdaki kodda:
unsigned char b = 256; if (b) { /* faire quelque chose */ }Karakter 8 bit uzunluğundaysa değişken yanlış (veya 0) biçerir . Bunun nedeni, 256 değerinin veri tipiyle eşleşmemesi, daha düşük 8 bitin kullanılmasıyla sonuçlanması, dolayısıyla değerin sıfır olmasıdır. Ancak, türün değiştirilmesi önceki kodun normal şekilde davranmasına neden olur:unsigned char
_Bool b = 256; if (b) { /* faire quelque chose */ }_Bool türü ayrıca gerçek değerlerin her zaman birbiriyle karşılaştırılabilir olmasını sağlar:
_Bool a = 1, b = 2; if (a == b) { /* faire quelque chose */ }