C Programlama Veri Tipleri
C programlama veri tipleri, değişkenleri veya farklı türlerdeki işlevleri bildirmek için kullanılan kapsamlı bir sistemi ifade eder. Bir değişkenin türü, depolamada ne kadar yer kapladığını ve depolanan bit modelinin nasıl yorumlanacağını belirler.
C’deki veri türler aşağıdaki gibi sınıflandırılabilir:
Sr.No. | Türler ve Açıklama |
---|---|
1 | Temel Türler Aritmetik türlerdir ve ayrıca şu şekilde sınıflandırılırlar: (a) tamsayı türleri(integer types) ve (b) kayan nokta türleri(floating-point types). |
2 | Numaralandırılmış Türler Yine aritmetik türlerdir ve program boyunca sadece belirli ayrık tamsayı değerleri atayabilen değişkenleri tanımlamak için kullanılırlar. |
3 | Hükümsüz(void) Türler Tür belirteci void , kullanılabilir değer olmadığını gösterir. |
4 | Türetilmiş Türler Bunlar (a) Pointer(İşaretçi türleri), (b) Array(Dizi türleri), (c) Struct(Yapı türleri), (d) (Union)Birleştirme türleri ve (e) Function(İşlev türleri) olarak sınıflandırılır. |
Dizi türleri ve yapı türleri toplu olarak toplu türler olarak adlandırılır. Bir işlevin türü, işlevin dönüş değerinin türünü belirtir. Temel türleri aşağıdaki bölümde göreceğiz, diğer türler de sonraki bölümlerde kullanılmaya ihtiyaç duyulduğunda ele alınacaktır.
Tamsayı Türleri
Aşağıdaki tablo, depolama boyutları ve değer aralıklarıyla birlikte standart tamsayı türlerinin ayrıntılarını sağlar:
Tip | Depolama Boyutu | Değer Aralığı |
---|---|---|
char | 1 bayt | -128 ile 127 ya da 0 ile 255 |
unsigned char | 1 bayt | 0ile 255 |
signed char | 1 bayt | -128ile 127 |
int | 2ya da 4 bayt | -32,768ile 32,767ya da -2,147,483,648ile 2,147,483,647 |
unsigned int | 2ya da 4 bayt | 0 to 65,535ya da 0ile 4,294,967,295 |
short | 2 bayt | -32,768ile 32,767 |
unsigned short | 2 bayt | 0ile 65,535 |
long | 8 bayt veya (32 bit işletim sistemi için 4 bayt) | -9223372036854775808ile 9223372036854775807 |
unsigned long | 8 bayt | 0ile 18446744073709551615 |
Belirli bir sistemde bir türün veya değişkenin tam boyutunu elde etmek için sizeof operatörünü kullanabilirsiniz. sizeof(type) ifadeleri, nesnenin depolama boyutunu veya bayt cinsinden türünü verir. Aşağıda, limits.h başlık dosyasında tanımlanan farklı sabitleri kullanan bir makinede çeşitli türlerin boyutunu elde etmek için kullanılan bir önişlemci türüdür.
#include <stdio.h> #include <stdlib.h> #include <limits.h> #include <float.h> int main(int argc, char** argv) { printf("CHAR_BIT : %d\n", CHAR_BIT); printf("CHAR_MAX : %d\n", CHAR_MAX); printf("CHAR_MIN : %d\n", CHAR_MIN); printf("INT_MAX : %d\n", INT_MAX); printf("INT_MIN : %d\n", INT_MIN); printf("LONG_MAX : %ld\n", (long) LONG_MAX); printf("LONG_MIN : %ld\n", (long) LONG_MIN); printf("SCHAR_MAX : %d\n", SCHAR_MAX); printf("SCHAR_MIN : %d\n", SCHAR_MIN); printf("SHRT_MAX : %d\n", SHRT_MAX); printf("SHRT_MIN : %d\n", SHRT_MIN); printf("UCHAR_MAX : %d\n", UCHAR_MAX); printf("UINT_MAX : %u\n", (unsigned int) UINT_MAX); printf("ULONG_MAX : %lu\n", (unsigned long) ULONG_MAX); printf("USHRT_MAX : %d\n", (unsigned short) USHRT_MAX); return 0; }
Yukarıdaki programı derleyip çalıştırdığınızda, MacOS’ta aşağıdaki sonucu üretir:
CHAR_BIT : 8 CHAR_MAX : 127 CHAR_MIN : -128 INT_MAX : 2147483647 INT_MIN : -2147483648 LONG_MAX : 9223372036854775807 LONG_MIN : -9223372036854775808 SCHAR_MAX : 127 SCHAR_MIN : -128 SHRT_MAX : 32767 SHRT_MIN : -32768 UCHAR_MAX : 255 UINT_MAX : 4294967295 ULONG_MAX : 18446744073709551615 USHRT_MAX : 65535
Kayan Nokta Türleri(Floating-Point Types)
Aşağıdaki tablo, depolama boyutları ve değer aralıkları ile standart kayan nokta türlerinin ayrıntılarını ve bunların kesinliğini sağlar:
Tip | Depolama Boyutu | Değer Aralığı | Kesinlik |
---|---|---|---|
float | 4 bayt | 1.2E-38 ile 3.4E+38 | 6 ondalık basamak |
double | 8 bayt | 2.3E-308 ile 1.7E+308 | 15 ondalık basamak |
long double | 10 bayt | 3.4E-4932 ile 1.1E+4932 | 19 ondalık basamak |
Float.h başlık dosyası, bu değerleri ve gerçek sayıların programlarınızda ikili gösterimi hakkındaki diğer ayrıntıları kullanmanıza izin veren verileri tanımlar. Aşağıdaki örnek, bir kayan nokta türü tarafından alınan depolama alanını ve aralık değerlerini yazdırır:
#include <stdio.h> #include <stdlib.h> #include <limits.h> #include <float.h> int main(int argc, char** argv) { printf("Storage size for float : %d \n", sizeof(float)); printf("FLT_MAX : %g\n", (float) FLT_MAX); printf("FLT_MIN : %g\n", (float) FLT_MIN); printf("-FLT_MAX : %g\n", (float) -FLT_MAX); printf("-FLT_MIN : %g\n", (float) -FLT_MIN); printf("DBL_MAX : %g\n", (double) DBL_MAX); printf("DBL_MIN : %g\n", (double) DBL_MIN); printf("-DBL_MAX : %g\n", (double) -DBL_MAX); printf("Precision value: %d\n", FLT_DIG ); return 0; }
Yukarıdaki programı derleyip çalıştırdığınızda, MacOS’ta aşağıdaki sonucu üretir:
Storage size for float : 4 FLT_MAX : 3.40282e+38 FLT_MIN : 1.17549e-38 -FLT_MAX : -3.40282e+38 -FLT_MIN : -1.17549e-38 DBL_MAX : 1.79769e+308 DBL_MIN : 2.22507e-308 -DBL_MAX : -1.79769e+308 Precision value: 6
Hükümsüz(void) Tipi
void türü, kullanılabilir bir değer olmadığını belirtir. Üç tür durumda kullanılır:
Sr.No. | Türler ve Açıklama |
---|---|
1 | İşlev geçersiz olarak döndürmek C’de herhangi bir değer döndürmeyen çeşitli işlevler vardır veya bunların void döndürdüğünü söyleyebilirsiniz. Dönüş değeri olmayan bir işlev, dönüş türüne void olarak sahiptir. Örneğin, void exit (int status); |
2 | void olarak işlev argümanları C’de herhangi bir parametre kabul etmeyen çeşitli fonksiyonlar vardır. Parametresi olmayan bir fonksiyon bir boşluğu kabul edebilir. Örneğin, int rand(void); |
3 | Geçersiz kılmak için işaretçiler void * türündeki bir işaretçi, bir nesnenin adresini temsil eder, ancak türünü temsil etmez. Örneğin, bir bellek ayırma işlevi void *malloc( size_t size ); herhangi bir veri türüne dönüştürülebilen geçersiz bir işaretçi döndürür. |
Format Belirteçleri
Format belirteçleri, giriş ve çıkış amaçları için C’de kullanılır. Bu kavramı kullanarak derleyici, scanf() işlevini kullanarak girdi alırken ve printf() işlevini kullanarak yazdırırken bir değişkende ne tür verilerin olduğunu anlayabilir.
Format Belirteci | Tip |
---|---|
%c | Character |
%d | Signed integer |
%e or %E | Scientific notation of floats |
%f | Float values |
%g or %G | Similar as %e or %E |
%hi | Signed integer (short) |
%hu | Unsigned Integer (short) |
%i | Unsigned integer |
%l veya %ldveya %li | Long |
%lf | Double |
%Lf | Long double |
%lu | Unsigned int or unsigned long |
%lliveya %lld | Long long |
%llu | Unsigned long long |
%o | Octal representation |
%p | Pointer |
%s | String |
%u | Unsigned int |
%xveya %X | Hexadecimal representation |
%n | Prints nothing |
%% | Prints % character |
Yorum yapma özelliği, forum tarafından gelen istek sebebiyle kapatılmıştır. Lütfen tartışmalar ve sorularınız için topluluk forumumuza katılın.