Ana sayfa C Veri türleri
Gönderi
İptal

C Veri türleri

İfade (expression) adı verilen yapı içinde, program değişken ve sabitlerden oluşan verilere işlemciler yoluyla bir işlem yapar. Artık, ifadeleri oluşturan veri kavramını incelemeye başlayabiliriz.

Veri türleri

C’de aşağıda gösterilen 5 temel veri çeşidi vardır:

C temel veri türleri

Anahtar kelimeVeri türü
charKarakter
intTamsayı
floatKayan noktalı sayı
doubleÇift duyarlıklı kayan noktalı sayı
voidDeğersiz

Veri türü değiştiricileri (modifiers)

Sadece char, int ve double veri türlerinin önüne aşağıda gösterilen değiştiricileri koyarak, veri tiplerinin işaret (+/-) durumunu, byte olarak boyutlarını ve sınırlarını değiştirebiliriz. C++’da kullanılan veri türü değiştiricileri ve uygulandıkları veri türleri aşağıda gösterilmektedir:

C veri türü değiştiricileri

DeğiştiriciUygulandığı veri türü
signedchar, int
unsignedchar, int
longint, double
shortint

Değişken tanımlamalarında signed değiştirici ifadesi kullanıldığında, tanımlanan değişkenin ikili sayı sistem değeri içinde en üst sırada yer alan bit’i işaret bit’i olarak kullanılır. Bu değer 0 olursa sayı pozitif, 1 olursa sayı negatif olur. Ancak, bu durumda bir bit sayının işaretini belirlemek için ayrıldığından tanımlanan değişkene atanacak değer otomatik olarak azalır.

Bilgisayarlarda, bir sayının ikili sayı sisteminde gösteriminde en solda yer alan bit, sayının negatif veya pozitif olduğunu göstermek üzere, işaret bit’i olarak kullanılır.

Pozitif bir sayıyı negatif bir sayıya çevirmek için, sayıdaki bütün bit değerlerinin tersi alınır ve elde edilen sayıya 1 değeri eklenir.

Biri signed diğeri unsigned olan iki adet char ve iki adet short int veri türünden değişken tanımlayalım:

1
2
3
4
5
signed char cd;          // Alabileceği maksimum değer : 127 => 0 1 1 1 1 1 1 1 
unsigned char ucd;       // Alabileceği maksimum değer : 255 => 1 1 1 1 1 1 1 1

short int sid;	         // Alabileceği maksimum değer : 32767 => 0 1 1 1 1 1 1 1  1 1 1 1 1 1 1  	
unsigned short int usid; // Alabileceği maksimum değer : 65535 => 1 1 1 1 1 1 1 1  1 1 1 1 1 1 1

cd ve sid değişkenleri için el solda yer alan değer işaret bit’i olarak kullanıldığından, değişkenlerin alabileceği maksimum değer sırasıyla 127 ve 32767 olacaktır. ucd ve usid değişkenleri en solda yer alan bit’i sayı değerleri için kullanabileceğinden, değişkenlerin alabileceği maksimum değer sırasıyla 255 ve 65535 olacaktır.

C’de, unsigned, short veya long int değerlerin bildirimi yapılırken int ifadesinin kullanılması tamamen isteğe bağlıdır. Başka bir ifade ile, bu tip tanımlamalarda int ifadesini kullanmayabiliriz. Örneğin, aşağıdaki işlem satırlarının her ikisi de id adlı unsigned int bir değişken tanımlar:

1
2
unsigned int id;
unsigned id;

C dilinde temel veri çeşitleri kullanılarak oluşturulabilen bütün veri çeşitleri ile byte uzunlukları ve sınırlarının genel olarak kullanılan değerleri ile printf() ve scanf() fonksiyonları ile kullanılan format tanımlayıcıları aşağıdaki tabloda gösterilmektedir:

C’nin diğer önemli bir özelliği de, char değişkenlerin ASCII karakter seti dışında değerler taşıyabilmesidir. Eğer, -128 ile 127 arasında kalan küçük int değerlerle işlem yapıyorsak, bu int değerleri atamak için int değişken yerine char bir değişken kullanabiliriz.

C veri türleri tablosu

C veri türleri tablosu

Veri türüBit genişliğiAlt sınırÜst sınırFormat tanımlayıcısı 
    printf()scanf()
char8-128127%c%c
unsigned char80255%c%c
signed char8-128127%c%c
int16 veya 32-32.768 veya -2.147.483.64832.767 veya 2.147.483.647%d%d
unsigned int16 veya 32065.535 veya 4.294.967.295%u%u
short int16-32.76832767%hd%hd
unsigned short int16065.535%hu%hu
long int32-2.147.483.6482.147.483.647%ld%ld
long long int (C99)64−9.223.372.036.854.775.8089.223.372.036.854.775.807%lld%lld
unsigned long int3204.294.967.295%lu%lu
unsigned long long int (C99)64018.446.744.073.709.551.615%llu%llu
float321.17549e-0383.40282e+038%f%f
double642.22507e-3081.79769e+308%f%lf
long double963.3621e-49321.18973e+4932%Lf%Lf

Aşağıdaki program çalıştırıldığı bilgisayardaki tanımlı veri türlerinin byte ve bit olarak genişlikleri ile limits.h ve float.h başlık dosyalarında tanımlı alt ve üst sınır değerlerini ekrana yazar.

Örnek

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <stdio.h>
#include <limits.h>
#include <float.h>

int main(void)
{
  printf("char -> byte: %d bit: %d min: %d max: %d\n", sizeof(char), sizeof(char)*8, CHAR_MIN, CHAR_MAX);
  printf("unsigned char -> byte: %d bit: %d min: %d max: %d\n", sizeof(unsigned char), sizeof(unsigned char)*8, (unsigned char) 0, UCHAR_MAX);
  printf("signed char -> byte: %d bit: %d min: %d max: %d\n\n", sizeof(signed char), sizeof(signed char)*8, SCHAR_MIN, SCHAR_MAX);

  printf("int -> byte: %d bit: %d min: %d max: %d\n", sizeof(int), sizeof(int)*8, INT_MIN, INT_MAX);
  printf("unsigned int -> byte: %d bit: %d min: %u max: %u\n", sizeof(unsigned int), sizeof(unsigned int)*8, (unsigned int) 0, UINT_MAX);
  printf("short int -> byte: %d bit: %d min: %hd max: %hd\n", sizeof(short int), sizeof(short int)*8, SHRT_MIN, SHRT_MAX);
  printf("unsigned short int -> byte: %d bit: %d min: %hu max: %hu\n\n", sizeof(unsigned short int), sizeof(unsigned short int)*8, 0, USHRT_MAX);

  printf("long int -> byte: %d bit: %d min: %ld max: %ld\n", sizeof(long int), sizeof(long int)*8, LONG_MIN, LONG_MAX);
  printf("long long int -> byte: %d bit: %d min: %lld max: %lld\n", sizeof(long long int), sizeof(long long int)*8, LLONG_MIN, LLONG_MAX);
  printf("unsigned long int -> byte: %d bit: %d min: %lu max: %lu\n", sizeof(unsigned long int), sizeof(unsigned long int)*8, (unsigned long int) 0, ULONG_MAX);
  printf("unsigned long long int -> byte: %d bit: %d min: %llu max: %llu\n\n", sizeof(unsigned long long int), sizeof(unsigned long long int)*8, (unsigned long long int) 0, ULLONG_MAX);

  printf("float -> byte: %d bit: %d min: %g max: %g\n", sizeof(float), sizeof(float)*8, -FLT_MAX, FLT_MAX);
  printf("double -> byte: %d bit: %d min: %lg max: %lg\n", sizeof(double), sizeof(double)*8, -DBL_MAX, DBL_MAX);
  printf("long double -> byte: %d bit: %d min: %Lg max: %Lg\n", sizeof(long double), sizeof(long double)*8, -LDBL_MAX, LDBL_MAX);
  
  return 0;
}


Yukarıdaki program aşağıdaki verileri ekrana yazar.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
char -> byte: 1 bit: 8 min: -128 max: 127
unsigned char -> byte: 1 bit: 8 min: 0 max: 255
signed char -> byte: 1 bit: 8 min: -128 max: 127

int -> byte: 4 bit: 32 min: -2147483648 max: 2147483647
unsigned int -> byte: 4 bit: 32 min: 0 max: 4294967295
short int -> byte: 2 bit: 16 min: -32768 max: 32767
unsigned short int -> byte: 2 bit: 16 min: 0 max: 65535

long int -> byte: 4 bit: 32 min: -2147483648 max: 2147483647
long long int -> byte: 8 bit: 64 min: -9223372036854775808 max: 9223372036854775807
unsigned long int -> byte: 4 bit: 32 min: 0 max: 4294967295
unsigned long long int -> byte: 8 bit: 64 min: 0 max: 18446744073709551615

float -> byte: 4 bit: 32 min: -3.40282e+038 max: 3.40282e+038
double -> byte: 8 bit: 64 min: -1.79769e+308 max: 1.79769e+308
long double -> byte: 12 bit: 96 min: 3.4E-4932 max: 1.1E+4932

Bu gönderi CC BY 4.0 lisansı altındadır.

C İşlem satırı ve ifade

C Programlama Değişkenler