C Programlama Dili'ne Giriş Veri Tipleri, Değişkenler ve Sabitler

İsimli konu WH 'Programlama' kategorisinde, ozan güneri üyesi tarafından 28 Nisan 2012 tarihinde yazılmıştır. C Programlama Dili'ne Giriş Veri Tipleri, Değişkenler ve Sabitler hakkında bilgi ve tartışmalar.

  1. C Programlama Dili'ne Giriş Veri Tipleri, Değişkenler ve Sabitler


    [SIZE=+2]Giriş[/SIZE]Orta ve yüksek seviyeli dillerin hemen hemen hepsinde veri tipi ve değişken kavramı bulunmaktadır. Bu kısımda C programlama dilindeki temel veri tipleri, tanımlayıcılar, değişkenler ve sabitler konu edilecektir.

    [SIZE=+2]2.1 Veri Tipleri[/SIZE]Veri tipi (data type) program içinde kullanılacak değişken, sabit, fonksiyon isimleri gibi tanımlayıcıların tipini, yani bellekte ayrılacak bölgenin büyüklüğünü, belirlemek için kullanılır. Bir programcı, bir programlama dilinde ilk olarak öğrenmesi gereken, o dile ait veri tipleridir. Çünkü bu, programcının kullanacağı değişkenlerin ve sabitlerin sınırlarını belirler. C programlama dilinde dört tane temel veri tipi bulunmaktadır. Bunlar:

    char int float doubleFakat bazı özel niteleyiciler vardır ki bunlar yukarıdaki temel tiplerin önüne gelerek onların türevlerini oluşturur. Bunlar:
    short long unsignedBu niteleyiciler sayesinde değişkenin bellekte kaplayacağı alan isteğe göre değiştirilebilir. Kısa (short), uzun (long), ve normal (int) tamsayı arasında yalnızca uzunluk farkı vardır. Eğer normal tamsayı 32 bit (4 bayt) ise uzun tamsayı 64 bit (8 bayt) uzunluğunda ve kısa tamsayı 16 biti (2 bayt) geçmeyecek uzunluktadır. İşaretsiz (unsigned) ön eki kullanıldığı taktirde, veri tipi ile saklanacak değerin sıfır ve sıfırdan büyük olması sağlanır. İşaretli ve işaretsiz verilerin bellekteki uzunlukları aynıdır. Fakat, işaretsiz tipindeki verilerin üst limiti, işaretlinin iki katıdır.
    [TABLE="width: 70%"]
    [TR]
    [TD="bgcolor: #FFFF99"] NOT
    Kısa ve uzun tamsayı tutacak tanımlayıcılar için int anahtar kelimesinin yazılmasına gerek yoktur.
    short s; /* short int s; anlamında */ long k; /* long int k; anlamında */​
    [/TD]
    [/TR]
    [/TABLE]
    Bir C programı içerisinde, veri tiplerinin bellekte kapladığı alan sizeof operatörü ile öğrenilebilir. İlgi cekici olan, bu alanların derleyiciye ve işletim sistemine bağlı olarak değişiklik göstermesidir. Program 2.1'de, sizeof operatörü kullanılarak, veri tiplerinin bellek uzunlularının nasıl ekrana yazdırılacağı gösterilmiştir. Programın çıktısı, farklı derleyiciler ve işletim sisteminde denendiğinde bu durum daha iyi anlaşılır. Lütfen inceleyin.
    Program 2.1: Değişken tipleri ve türevlerinin bellekte kapladıkları alanlar[TABLE="width: 70%"]
    [TR]
    [TD="width: 35"]
    01: 02: 03: 04: 05: 06: 07: 08: 09: 10: 11: 12: 13: 14: 15: 16: 17: 18: [/TD]
    [TD]
    /* 02prg01.c : sizeof operatörünün kullanımı */#include <stdio.h>main(){ printf( "char : %d bayt\n", sizeof(char)); printf( "short : %d bayt\n", sizeof(short)); printf( "int : %d bayt\n", sizeof(int)); printf( "long : %d bayt\n", sizeof(long)); printf( "unsigned char : %d bayt\n", sizeof(unsigned char)); printf( "unsigned short : %d bayt\n", sizeof(unsigned short)); printf( "unsigned int : %d bayt\n", sizeof(unsigned int)); printf( "unsigned long : %d bayt\n", sizeof(unsigned long)); printf( "float : %d bayt\n", sizeof(float)); printf( "double : %d bayt\n", sizeof(double)); printf( "long double : %d bayt\n", sizeof(long double));}[/TD]
    [/TR]
    [/TABLE]
    ÇIKTI[TABLE="width: 700"]
    [TR]
    [TD="width: 33%"]Windows (32 bit) Turbo C[/TD]
    [TD="width: 33%"]Windows (32 bit) Salford[/TD]
    [TD="width: 33%"]Linux (32 bit) GCC[/TD]
    [TD="width: 33%"]Linux (64 bit) GCC[/TD]
    [/TR]
    [TR]
    [TD]
    char : 1 baytshort : 2 baytint : 2 baytlong : 4 baytunsigned char : 1 baytunsigned short : 2 baytunsigned int : 2 baytunsigned long : 4 baytfloat : 4 baytdouble : 8 baytlong double : 10 bayt[/TD]
    [TD]
    char : 1 baytshort : 2 baytint : 4 baytlong : 4 baytunsigned char : 1 baytunsigned short : 2 baytunsigned int : 4 baytunsigned long : 4 baytfloat : 4 baytdouble : 8 baytlong double : 10 bayt[/TD]
    [TD]
    char : 1 baytshort : 2 baytint : 4 baytlong : 4 baytunsigned char : 1 baytunsigned short : 2 baytunsigned int : 4 baytunsigned long : 4 baytfloat : 4 baytdouble : 8 baytlong double : 12 bayt[/TD]
    [TD]
    char : 1 baytshort : 2 baytint : 4 baytlong : 8 baytunsigned char : 1 baytunsigned short : 2 baytunsigned int : 4 baytunsigned long : 8 baytfloat : 4 baytdouble : 8 baytlong double : 16 bayt[/TD]
    [/TR]
    [/TABLE]
    int veritipi ve türevleri ile hesaplanabilecek en küçük ve en büyük tamsayılar için aşağıdaki formül kullanılabilir:
    Alt sınır = -2[SUP]8*sizeof(tip)[/SUP]
    Üst sınır = 2[SUP]8*sizeof(tip)[/SUP]-1
    Örneğin 4 baytlık bir int tipi için:
    Alt sınır = -2[SUP]8*sizeof(int)[/SUP] = -2[SUP]32[/SUP] = -2147483648
    Üst sınır = 2[SUP]8*sizeof(int)[/SUP]-1 = 2[SUP]32[/SUP]-1 = 2147483647
    Tablo 2.1'de bütün tipler, bellekte kapladıkları alanlar ve hesaplanabilcek (bellekte doğru olarak saklanabilecek) en büyük ve en küçük sayılar listelenmiştir.Tablo 2.1: Değişken tipleri ve bellekte kapladıkları alanlar[TABLE]
    [TR]
    [TD="bgcolor: #DADADA"]Veri Tipi[/TD]
    [TD="bgcolor: #DADADA, align: center"]Açıklama[/TD]
    [TD="bgcolor: #DADADA, align: center"]Bellekte işgal ettiği boyut (bayt)[/TD]
    [TD="bgcolor: #DADADA, align: center"]Alt sınır[/TD]
    [TD="bgcolor: #DADADA, align: center"]Üst sınır[/TD]
    [/TR]
    [TR]
    [TD]char[/TD]
    [TD="align: center"]Tek bir karakter veya
    küçük tamsayı için[/TD]
    [TD="align: center"]1[/TD]
    [TD="align: right"]-128[/TD]
    [TD="align: right"]127[/TD]
    [/TR]
    [TR]
    [TD]unsigned char[/TD]
    [TD="align: right"]0[/TD]
    [TD="align: right"]255[/TD]
    [/TR]
    [TR]
    [TD]short int[/TD]
    [TD="align: center"]Kısa tamsayı için[/TD]
    [TD="align: center"]2[/TD]
    [TD="align: right"]-32,768[/TD]
    [TD="align: right"]32,767[/TD]
    [/TR]
    [TR]
    [TD]unsigned short int[/TD]
    [TD="align: right"]0[/TD]
    [TD="align: right"]65,535[/TD]
    [/TR]
    [TR]
    [TD]int[/TD]
    [TD="align: center"]Tamsayı için[/TD]
    [TD="align: center"]4[/TD]
    [TD="align: right"]-2,147,483,648[/TD]
    [TD="align: right"]2,147,483,647[/TD]
    [/TR]
    [TR]
    [TD]unsigned int[/TD]
    [TD="align: right"]0[/TD]
    [TD="align: right"]4,294,967,295[/TD]
    [/TR]
    [TR]
    [TD]long int[/TD]
    [TD="align: center"]Uzun tamsayı için[/TD]
    [TD="align: center"]8[/TD]
    [TD="align: right"] -9,223,372,036,854,775,808[/TD]
    [TD="align: right"]9,223,372,036,854,775,807[/TD]
    [/TR]
    [TR]
    [TD]unsigned long int[/TD]
    [TD="align: right"]0[/TD]
    [TD="align: right"] 18,446,744,073,709,551,615[/TD]
    [/TR]
    [TR]
    [TD]float[/TD]
    [TD]Tek duyarlı gerçel sayı için (7 basamak)[/TD]
    [TD="align: center"]4[/TD]
    [TD="align: right"]-3.4e +/- 38[/TD]
    [TD="align: right"]+3.4e +/- 38[/TD]
    [/TR]
    [TR]
    [TD]double[/TD]
    [TD]Çift duyarlı gerçel sayı için (15 basamak)[/TD]
    [TD="align: center"]8[/TD]
    [TD="align: right"]-1.7e +/- 308[/TD]
    [TD="align: right"]+1.7e +/- 308[/TD]
    [/TR]
    [/TABLE]
    28 Nisan 2012
    #1
  2. C Programlama Dili'ne Giriş Veri Tipleri, Değişkenler ve Sabitler Cevapları

soru sor

C Programlama Dili'ne Giriş Veri Tipleri, Değişkenler ve Sabitler