Seversintabi.com Türkiye'nin En Büyük Forumu Bence Seversin Tabi
 

Go Back   Seversintabi.com Türkiye'nin En Büyük Forumu Bence Seversin Tabi > Bilgisayar Dünyası > Programlama Ve Tasarım
Yardım Topluluk Takvim Bugünki Mesajlar Arama

gaziantep escort gaziantep escort
youtube beğeni hilesi
Cevapla

 

LinkBack Seçenekler Stil
  #1  
Alt 20 September 2008, 09:01
Banned
 
Kayıt Tarihi: 29 July 2008
Mesajlar: 0
Konular:
Aldığı Beğeni: 0 xx
Beğendiği Mesajlar: 0 xx
Arrow C Programlama Dili

C dili, programlama dünyasının en çok kullanılan dilidir.
void function1(void);
void funciton2();

int main()
{
char ch = 'a';
function1();
function2(33, ch);
return 0;
}
void function1(void)
{
printf("In function1\n");
}
void function2()
{
printf("In function2\n");
}
void function1(void);
void function2();
fonksiyon prototipleri arasındaki fark nedir?
Parametresi void olarak belirlenmiş bir fonksiyon, C dili standartlarına göre hiçbir parametre almaz.
Parametre parantezlerine hiçbir değer girilmemiş fonksiyon ise, parametre kontrolünün yapılmayacağı anlamına gelir. Yani bu fonksiyon çağrılırken istenilen türde ve sayıda parametre alabilir. Tür ve parametre sayı kontrolü yapılmaz..
int main()
{
int a=1;
switch(a)
{
int b=20;
case 1:
printf("b is %d\n",b);
break;
default:
printf("b is %d\n",b);
break;
}
return 0;
}

Bu kodda ise, ekrana " b is 20" yazılmasını bekleyeceksiniz. Ancak 20 yerine çok tuhaf bir sayı gelecektir. Neden?
switch bloğu içinde yeni bir değişken tanımlanıp ilk değer verilmiştir. Bu tamamen hatalı bir durumdur. switch bloğunun dışında tanımlanıp yine switch bloğu içerisinde değer atanırsa yine ekrana istenilen değer yazılmayacaktır.
Yapılması gereken, int b = 20; ifadesi switch bloğunun dışında bildirilmelidir.
#define SIZE 10 void size(int arr[SIZE])
{
printf("size of array is:%d\n", sizeof(arr));
}

int main()
{
int arr[SIZE];
size(arr);
return 0;
}

Burada ise yapılmak istenen arr dizisinin kaç bitlik boyut kapladığını bulmaktır. Beklenen cevap integer türünün 4 bit olarak tutulduğu sistemlerde 40'tır. Ancak bu soruda cevap 4 olacaktır.
Sebep? size() fonksiyonuna parametre olarak geçirilen arr, sadece bir göstericidir. Yani bu fonksiyon o göstericinin boyutunu hesaplar. Ekrana çıkan 4 sonucu, bir integer sabiti gösteren göstericinin boyutudur.
int main()
{
char c;
scanf("%c",&c);
printf("%c\n",c);

scanf(" %c",&c);
printf("%c\n",c);
system("pause");
return 0;
}
İlk scanf fonksiyonunun kullanımı ile ikinci scanf fonksiyonunun kullanımı arasındaki farkı görebildiniz mi? 1. kullanım doğru iken, 2.sinde küçük bir bug var. Yani scanf(" %c", &c) ifadesinde, % karakterinden önce bir boşluk bırakılmış. Bu boşluğun scanf tarafından yorumlanışı bizim istemediğimiz bir şekilde olacaktır. Yani bir karakter girdiğimizde onu alıp işlemeyecektir (boşluk yüzünden).
Sonuç olarak, printf fonksiyonunda parametreler arasna istediğimiz kadar boşluk koyabiliriz. Bu boşluklar, değerlerin ekrana yazılmasında rol alır. Ancak scanf fonksiyonunda yanlışlıkla kullanılacak bir boşluk, girilen değerlerin sırasını alt-üst edecektir.
int main()
{
int i;
i = 10;
printf("i : %d\n",i);
printf("sizeof(i++) is: %d\n", sizeof(i++));
printf("i : %d\n",i);
return 0;
}
Burada ise sizeof(i++) ifadesi ile i değerinin bir artarak ikinci printf fonksiyonunda ekrana 11 değerinin yazılması beklenir. Ancak sizeof(i++), sizeof(++i) ve sizeof(i) aynı şekilde çalışır. Yani ++ operatörünün yan etkisi çalışmaz. #define PrintInt(expr) printf("%s : %d\n", #expr,(expr))
int main()
{
int y = 100;
int *p;
p = (int*)malloc(sizeof(int));
*p = 10;
y = y/*p; /*dividing y by *p */;
PrintInt(y);
return 0;
}

Ekrana 10 yazılmasını beklerken 100 yazılıyor. Kodu dikkatlice incelerseniz, y = y/*p ifadesinde bir tuhaflık olduğunu göreceksiniz. Bu kodun bulunduğu satıra yazılan yorum sayesinde, *p değişkeni gözden kaçırılıyor. Yani yorum satırı y'den sonraki /* karakterleriyle başlıyor. Ve istenilen sonuç yerine y = y ifadesinin sonucu yazılıyor. Gösterici işaretinin ve yorum satırlarının kullanımına dikkat etmek gerek. Burada, / atomundan sonra bir boşluk verilerek bug düzeltilir.
y = y / *p;
Alıntı ile Cevapla
Cevapla




Saat: 07:07


Telif Hakları vBulletin® v3.8.9 Copyright ©2000 - 2024, ve
Jelsoft Enterprises Ltd.'e Aittir.
gaziantep escort bayan gaziantep escort
antalya haber sex hikayeleri aresbet giriş vegasslotguncel.com herabetguncel.com ikili opsiyon bahis vegasslotyeniadresi.com vegasslotadresi.com vegasslotcanli.com getirbett.com getirbetgir.com
ankara escort ankara escort ankara escort bayan escort ankara ankara escort çankaya escort ankara otele gelen escort eryaman escort adana escort eryaman escort kızılay escort çankaya escort kızılay escort ankara eskort

Search Engine Friendly URLs by vBSEO 3.6.0 PL2