C Dersleri : C Programlamada Veri Tipleri

advertisement
C Programlamada Veri Tipleri
C Programlamada Veri Tipleri
Temel Veri Tipleri (Primary Data Type )
char : karakter
int : tamsayılar
float : ondalıklı gerçek sayı (6.basamağa kadar hassasiyet)
double : ondalıklı gerçek sayı (10. basamağa kadar hassasiyet)
void : boş veri tipi
C Programlama Dilin'de temel veri tiplerinin yanı sıra birde özel veri tipleri bulunmaktadır.
Özel Veri Tipleri (Secondary Data Type)
array : dizi
pointer : işaretci
structure : veri yapısı
enum : sıralanmış değerler
union: farklı tür ve boyutlardaki veriler
Temel Veri Tipleri (Primary Data Type )
CHAR Veri Tipi : Karakter değişkenlerini tutmak için tasarlanmış veri tipidir. char veri tipinde değişkenler bellekte 1 byte alan
kaplamaktadırlar. char veri tipi karakter değişkenlerini saklamasına rağmen sayısal bir veri tipidir. Çünkü C Programlama Dilinde
her karakterin sayısal bir karşılığı vardır.En basit anlatımla karakterlerin sayısal karşılıkları American Standart Kodlaması olarak
bilinen ASCII (American Standart Code for Information Interchange) tablosudur. ASCII kodlama tablosu sadece C diline özgü değil
bütün programlama dillerinde karakterlerin sayısal karşılığını tutmak için kullanılmaktadır.
www.dijitalders.net
C Programlamada Veri Tipleri
1
C Programlamada Veri Tipleri
ASCII tablosunda 72 sayısının H karakterine 104 sayısınında h karakterine karşılık geldiğini görmekteyiz. Örneğin char ornekch =
'H' ifadesinde ornekch isimli karakter değişkene ASCII tablosunda H harfinin karşılığı 40 sayısını atamaktadır. Yazmış olduğumuz
kod parçasında görüldüğü gibi karakter değeri tek tırnak işaretleri arasındadır. Aynı şekilde chat ornekch = '72' yazım şekliylede
ornekch isimli karakter değişkene atama yapabiliriz. char tipindeki değişkenlerin ASCII karşılığını printf fonksiyonuyla yazdırmak
istediğimizde %c niteleyicisini kullanmalıyız.
printf("ornekch degiskeninin karakter degeri:%cn",ornekch);
Örnek char veri tipi
#include <stdio.h>
int main(int argc,
{
char ornekch1
char ornekch2
char ornekch3
char** argv)
='H';
=67;
=84;
printf("ornekch1 degiskeninin karakter degeri:%cn", ornekch1);
printf("ornekch1 degiskeninin sayi degeri:%dnn", ornekch1);
printf("ornekch2 degiskeninin karakter degeri:%cn", ornekch2);
printf("ornekch2 degiskeninin sayi degeri:%dnn", ornekch2);
printf("ornekch3 degiskeninin karakter degeri:%cn", ornekch3);
printf("ornekch3 degiskeninin sayi degeri:%dnn", ornekch3);
return ;
}
www.dijitalders.net
C Programlamada Veri Tipleri
2
C Programlamada Veri Tipleri
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char** argv) {
char harfi1 = 'a';
char harf2 = 97;
//printf("brinci harf:%c ikinci harf:%h", harfi1, harf2);
printf("n %c%c%c%c%c%c%c %c%c%c%c%c%c%c%c", 'c', 97, 103, 'l', 97, 'r', , 's', 'a', 'y', 'g','i', 'l','a', 'r');
printf("n c=%d a=%d g=%d l=%d a=%d r=%d",'c', 97, 103, 'l', 'a', 'r');
return (EXIT_SUCCESS);
}
INT Veri Tipi : Tamsayı değerlerini tutmak için kullanılır. int veri tipi bellekte en az 2 byte veya 16 bit yer tutarlar.İngilizcede
tamsayı anlamına gelen integer kelimesinden gelmektedir. Program içerisinde int tipine sahip ts adında bir tamsayı değişken
tanımlayarak kullanımını görelim.
Örnek int veri tipi
#include <stdio.h>
int main(int argc, char** argv)
{
signed int ts = 226;
printf("ornek int veri tipi ts degiskeninin degeri: %dn", ts);
return ;
}
printf içerisinde tam sayı tipinde değişkenler %d biçim niteleyicisiyle yazılırlar.
www.dijitalders.net
C Programlamada Veri Tipleri
3
C Programlamada Veri Tipleri
FLOAT Veri Tipi : Ondalık sayılarımızı tutmak için kullanırız. Ondalık sayılar için kullanılan temel iki veri tipinden birisi float'dır.
float veri tipini diğerinden farklı kılan özelliği virgülden sonra 6 sayıya kadar sayıları bellekte tutabilen bir veri tipi olmasıdır. float
veri tipinde değişkenler bellekte en az 4 byte veya 32 bit yer tutarlar. float tipinde değişkenler %f biçim niteleyicisiyle yazılırlar.
DOUBLE Veri Tipi : Long Float olarak da bilinir. Aynen float gibi ondalık sayılarımızı tutmak için kullanırız. float ve double
arasındaki fark ise double veri tipinin çift duyarlılıklı ve 8 byte veya 64 bit yer kaplamasıdır. Ayrıca double veri tipinde virgülden
sonra 10.basamağa kadar hassasiyetteki sayılar tutulabilir. Tıpkı float tipindeki değişkenlerde kullandığımız gibi double veri tipinde
de biçim niteleyicisi olarak %f ve %lf kullanılır. Double tipi, ondalıklı sayıların tanımlanmasında kullanılır. Ondalıklı sayılaryapıları
gereği tamsayıları da kapsar.
Örnek float ve double veri tipleri
#include <stdio.h>
#include <conio.h>
int main()
{
float d = 2.7;
double e = 27.7;
printf("f = %fn", d);
printf("d = %lfn",e);
getch();
return ;
}
VOID Veri Tipi : Genelde değişken tanımlanırken kullanılmaz. Amacı fonksiyonların parametre almadığını veya parametre
döndürmediğini göstermek için kullanılır.
Temel Veri Tiplerinin Türevleri
C Programlama dilinde temel veri tiplerinin yetersiz kaldığı durumlarda bu tiplerin önüne signed, unsigned, long ve short anahtar
kelimeleriyle, temel veri tipleri esas alınarak yeni veri tipleri oluşturulmuştur..Veri tiplerinin byte olarak boyutlarını ve sınırlarını
dönüştürebilirsiniz. Bu dönüşümlerde kullanılabilecek veri türleri aşağıda gösterilmektedir:
Değiştirici
signed
unsigned
long
short
Veri Türü
char, int
char, int
int, double
int
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.
Örneğin double ifadesinin önüne long ifadesi eklendiğinde oluşturulan long double veri tipi bellekte double için kullanılan 8 byte
olan alanı 10 byte'a çıkarır. Değiştirici kelimeler her veri tipinin önünde kullanılamazlar. Dönüştürme işlemi için geçiçi bellek alanı
kullanılır; dönüştürülen değer kullanıldıktan sonra o alan serbest bırakılır.
www.dijitalders.net
C Programlamada Veri Tipleri
4
C Programlamada Veri Tipleri
Type
Explanation
Format
Specifier
char
Smallest addressable unit of the machine that can contain basic character set. It is an
integer type. Actual type can be either signed or unsigned depending on the
implementation.
%c
signed char
Of the same size as char, but guaranteed to be signed.
%c
unsigned char
Of the same size as char, but guaranteed to be unsigned.
%c
short
short int
signed short
signed short int
Short signed integer type. Capable of containing at least the [−32767,+32767] range;[3]
thus, it is at least 16 bits in size.
%hi
unsigned short
unsigned short int
The same as short, but unsigned.
%hu
int
signed int
Basic signed integer type. Capable of containing at least the [−32767,+32767] range;[3]
thus, it is at least 16 bits in size.
%i or %d
unsigned
unsigned int
The same as int, but unsigned.
%u
long
long int
signed long
signed long int
Long signed integer type. Capable of containing at least the
[−2147483647,+2147483647] range;[3] thus, it is at least 32 bits in size.
%li
unsigned long
unsigned long int
The same as long, but unsigned.
%lu
long long
long long int
signed long long
signed long long int
Long long signed integer type. Capable of containing at least the
[−9223372036854775807,+9223372036854775807] range;[3] thus, it is at least 64 bits in
size. Specified since the C99 version of the standard.
%lli
unsigned long long
unsigned long long int
The same as long long, but unsigned. Specified since the C99 version of the standard.
%llu
float
Real floating-point type, usually referred to as a single-precision floating-point type. Actual
properties unspecified (except minimum limits), however on most systems this is the IEEE
%f
754 single-precision binary floating-point format. This format is required by the optional
Annex F "IEC 60559 floating-point arithmetic".
double
Real floating-point type, usually referred to as a double-precision floating-point type.
Actual properties unspecified (except minimum limits), however on most systems this is
the IEEE 754 double-precision binary floating-point format. This format is required by the
optional Annex F "IEC 60559 floating-point arithmetic".
long double
Real floating-point type, usually mapped to an extended precision floating-point number
format. Actual properties unspecified. Unlike types float and double, it can be either 80-bit
floating point format, the non-IEEE "double-double" or IEEE 754 quadruple-precision
%lf
floating-point format if a higher precision format is provided, otherwise it is the same as
double. See the article on long double for details.
%f
Karekter veri tipi char dışındaki diğer tamsayı veri tiplerinde unsigned veya signed ifadesi kullanılmazsa default olarak signed kabul
edilir. char veri tipinde ise değişken tanımladığımızda değişkenin signed'mı unsigned'mı olacağı derleyiciye bırakılmıştır.
Temel veri tiplerinin yetersiz kaldığı durumlarda anahtar kelimeleri kullandığımız zaman, printf() ve scanf() fonksiyonları farklı biçim
niteleyicileri kullanırlar.
www.dijitalders.net
C Programlamada Veri Tipleri
5
C Programlamada Veri Tipleri
C Veri Tiplerinin Maksimum Alabileceği Değerleri Gösteren Uygulama
// C program to print range of basic data types
#include <stdio.h>
#include <stdlib.h>
// Prints min and max value for a signed type
void printUnsignedRange(size_t bytes){
int bits = 8*bytes;
// Note that the value of ‘to’ is "(1 << bits) – 1"
// Writing it in following way doesn’t cause overflow
unsigned int to = ((1 << (bits-1)) - 1) + (1 << (bits-1)) ;
printf(" range is from %u to %u n", , to);
}
// Prints min and max value for an unsigned type
void printSignedRange(size_t bytes){
int bits = 8*bytes;
int from = -(1 << (bits-1));
int to = (1 << (bits-1)) - 1;
printf(" range is from %d to %dn", from, to);
}
int main(){
printf("signed char: ");
printSignedRange(sizeof(char));
printf("unsigned char: ");
printUnsignedRange(sizeof(unsigned char));
printf("signed int: ");
printSignedRange(sizeof(int));
printf("unsigned int: ");
printUnsignedRange(sizeof(unsigned int));
printf("signed short int: ");
printSignedRange(sizeof(short int));
printf("unsigned short int: ");
printUnsignedRange(sizeof(unsigned short int));
return ;
}
www.dijitalders.net
C Programlamada Veri Tipleri
6
C Programlamada Veri Tipleri
Örnekler yer değiştirme, veri tipi dönüşümü ve biçim niteleyici kullanımı
main(){
int x1;
double x2;
x2 = 332.544;
x1 = x2;
printf("%f %d %d", x2, x1, (int) x2);
}
Programımızda double bir değişkene atanan değeri, int bir değişkene atanır. İki değişkende değerini double değişken değerine yer
değiştirme (type cast) metodu ile geçici olarak int bir değere çevirerek tekrar ekrana yazar. Atama işlemlerinde, atama işaretinin
sol tarafında type cast metodu kullanılamaz.
#include "stdio.h"
main()
{
unsigned int x1;
float x2;
x1 = 32648;
x2 = 295.54;
printf("%f", x1*x2);
}
Örnekte programımız unsigned int bir değerle float bir değerin çarpımını ekrana yazar. C Programlama dilinde float ve unsigned
int değerleri aynı ifade içinde kullandığından sonuç float bir değer olarak karşımıza çıkacaktır.
#include "stdio.h"
main()
{
int x1, x2;
float x3;
x1 = 24, x2 = 2, x3 = 53;
printf("%f", x3/(x1/x2));
}
Tip dönüşümü, bir ifade içinde işlem yapıldığından, önce x1 ve x2 değişken değerlerinin bölme sonucu olan 12 değeri elde edilir.
Bunun nedeni her iki sayınında int bir değer olmasıdır. Daha sonra float olarak tanımlanmış olan x3 12'ye bölündüğünde, program
işlem sonucunu ondalık hanesini içerecek şekilde verir.
C Programlama Dilin'de , bir ifade içinde bir char veya short int veri kullanıldığında, bu verilerin değerleri int değere çevrilir.
Otomatik veri çeşidi değişimleri yapıldıktan sonra, program ifadelerde yer alan bütün verileri aynı ifade içindeki en büyük verinin
www.dijitalders.net
C Programlamada Veri Tipleri
7
C Programlamada Veri Tipleri
çeşidine çevirir.
Sabit Değer Tipleri
#include <stdio.h>
#include <stdlib.h>
int main(void){
const float pi=3.14;
#define ResimBuyuklugu 640; //sabit deger atamalarinda kullanilir ve programin basinda yer alir
//ResimBuyuklugu=849; define ile daha önce tanimlandigi icin degistirilemez
return ;
}
Kaynaklar
http://www.ibrahimbayraktar.net/2013/12/c-programlama-veri-tipleri.html
http://en.wikipedia.org/wiki/C_data_types
http://www.geeksforgeeks.org/c-prgram-print-range-basic-data-types-without-library-function-constant/
www.dijitalders.net
C Programlamada Veri Tipleri
8
Download
Study collections