C’deki data tipleri, değişkenlerin veya farklı türdeki fonksiyonları bildirilmesi için kullanılan geniş bir sistemi ifade eder. Bir değişkenin depolamada ne kadar yer kapladığını ve saklanan bit düzeninin nasıl yorumlandığını tipi belirler.
C’deki tipler aşağıdaki gibi sınıflandırılabilir:
Bunlar aritmetik tiplerdir ve ayrıca: (a) integer tipler ve (b) kayan noktalı tipler olarak sınıflandırılırlar. |
Bunlar tekrar aritmetik türleridir ve program boyunca yalnızca belirli kesikli tamsayı değerlerini atayabilen değişkenleri tanımlamak için kullanılırlar. |
void belirleyici tip, kullanılabilir bir değer olmadığını gösterir. |
(A) Pointer tipler, (b) Array tipler, (c) Structure tipler, (d) Union tipler ve (e) Fonksiyon tipler. |
Array tipleri ve structure tipleri ortaklaşa toplanmış tipler olarak adlandırılır. Bir fonksiyon tipi, fonksiyon dönüş değerinin tipini belirtir. Gelecek bölümlerde başka tiplerin de ele alınacağı aşağıdaki bölümde temel tipleri göreceğiz.
Aşağıdaki tabloda, standart integer tiplerinin ayrıntıları, depolama alanı boyutlarıyla ve değer aralıklarıyla birlikte verilmektedir.
Type | Storage size | Value range |
---|---|---|
char | 1 byte | -128 to 127 or 0 to 255 |
unsigned char | 1 byte | 0 to 255 |
signed char | 1 byte | -128 to 127 |
int | 2 or 4 bytes | -32,768 to 32,767 or -2,147,483,648 to 2,147,483,647 |
unsigned int | 2 or 4 bytes | 0 to 65,535 or 0 to 4,294,967,295 |
short | 2 bytes | -32,768 to 32,767 |
unsigned short | 2 bytes | 0 to 65,535 |
long | 4 bytes | -2,147,483,648 to 2,147,483,647 |
unsigned long | 4 bytes | 0 to 4,294,967,295 |
Belli bir data tipinin veya değişkenin tam boyutunu elde etmek için sizeof
operatörünü kullanabilirsiniz. sizeof(type)
ifadeleri, nesnenin veya yazının bayt cinsinden depolama boyutu sağlar. Aşağıda verilen, herhangi bir makinedeki int
türünün boyutunu elde etmek için bir örnektir.
#include <stdio.h>
#include <limits.h>
int main() {
printf("Storage size for int : %ld \n", sizeof(int));
return 0;
}
cc -std=c11 -Wall -g my_app.c -o my_app
Storage size for int : 4
Aşağıdaki tabloda, standart kayan nokta tiplerinin ayrıntıları, depolama boyutları ve değer aralıkları ve bunların hassaslığı ile birlikte verilmektedir.
Type | Storage size | Value range | Precision |
---|---|---|---|
float | 4 byte | 1.2E-38 to 3.4E+38 | 6 decimal places |
double | 8 byte | 2.3E-308 to 1.7E+308 | 15 decimal places |
long double | 10 byte | 3.4E-4932 to 1.1E+4932 | 19 decimal places |
float.h üst başlık dosyası, yukarda verlen bu değerleri ve programlarınızdaki gerçek sayıların ikili gösterimi hakkında diğer detayları kullanmanıza izin veren makroları tanımlar. Aşağıdaki örnek, bir float tipini ve onun değer aralığı tarafından alınan saklama alanını yazdırır.
#include <stdio.h>
#include <float.h>
int main() {
printf("Storage size for float : %ld\n", sizeof(float));
printf("Minimum float positive value: %E\n", FLT_MIN );
printf("Maximum float positive value: %E\n", FLT_MAX );
printf("Precision value: %d\n", FLT_DIG );
return 0;
}
Yukarıdaki programı derlediğinizde ve çalıştırdığınızda, Linux’ta aşağıdaki sonucu verir:
Storage size for float : 4
Minimum float positive value: 1.175494E-38
Maximum float positive value: 3.402823E+38
Precision value: 6
void tip, kullanılabilir bir değer olmadığını belirtir. Üç çeşit durumlarda kullanılır.
Sr.No. | Types & Description |
---|---|
1 | Function dönüşü olarak void C'de herhangi bir değer döndürmeyen çeşitli foksiyonlar vardır ya da void döndürdüklerini söyleyebilirsiniz. Dönüş değeri olmayan bir foksiyonun void dönüş tipi vardır. Örneğin, void exit (int status); |
2 | Fonksiyon parametresi olarak void C'de herhangi bir parametre kabul etmeyen çeşitli fonksiyonlar vardır. Parametre içermeyen bir fonksiyon boşluğu kabul edebilir. Örneğin, int rand(void); |
3 | Pointers olarak void void * tipinde bir işaretçi, bir nesnenin adresini temsil eder, ancak tipini belirtmez. Örneğin bir bellek ayırma fonksiyonu, a memory allocation function void *malloc( size_t size ); herhangi bir veri türüne aktarılabilen void bir işaretçi döndürür. |