C++ Ders 12[Değişken Ezme]

Life Hunter

Lapis Toplayıcısı
En iyi cevaplar
0
Herkese merhaba bu ders Değişken Ezme konusuna değineceğiz.

Farklı etki alanlarında aynı isimde değişkenler tanımlanabilir. Fakat bu değişkenlerden en son tanımlanan, diğerlerini bastırır.

Tanımlar örnek yapmadan pek bir şey ifade etmez. Bu yüzden hemen bir örnek yapalım.
Kod:
int main()
{
   int sayi1;
   int sayi1;
}
Yukarıdaki kod hata verecektir. Çünkü main fonksiyonunda yani tek bir etki alanında aynı isimde 2 değişken tanımlamışız.
Kod:
int main()
{
  int sayi1 = 4;
  if(1)
  {
      int sayi1 = 2;
  }
}
Bu kodda da aynı isme sahip 2 değişken tanımlamışız ama derleyici bu kodda hata vermez. Çünkü burada, aynı isme sahip 2 değişken var ama bu değişkenlerin etki alanları farklı. Değişkenlerden bir tanesi main fonksiyonun etki alanında tanımlanmış iken, Diğeri main fonksiyonun içine açtığımız başka bir etki alanında tanımlı. İkisinin etki alanı farklıdır.

Faka şöyle bir durum var. Bu iki değişkenin etki alanları farklı ama birinin etki alanı diğerinin etki alanını kapsıyor. Yani değişkenlerden biri main fonksiyonunda diğeri main fonksiyonun içindeki bir etki alanında tanımlanmış ama main fonksiyonunda tanımlanan değişkenin etki alanı main fonksiyonun içindeki diğer değişkenin etki alanınıda kapsıyor.

Kod:
int main()
{
  int sayi1 = 4;
  if(1)
  {
     int sayi1 = 2;
     cout << sayi1;
  }
}
Yukarıdaki gibi bir kodda ekrana hangi değer çıkacak? 4 mü yoksa 2 mi? En son tanımlanan değişken öncekileri bastırır. Bu kodda 2 değerini taşıyan sayi1 isimli değişken 4 değerini taşıyan sayi1 değişkeninden sonra tanımlanmıştır. Yani en son 2 değerini taşıyan değişken tanımlanmıştır. Bu durumda ekrana 2 değeri çıkacaktır.

Çok fazla derine inmeye gerek yok en son tanımlanan diğerlerini bastırır.

Kod:
int main()
{
   
   
        int sayi1 = 4;
        if (1)
        {
            int sayi1 = 2;
           
            if (1)
            {
                int sayi1 = 3;
                cout << sayi1;
            }
        }
   
}
Diyelimki daha da içeride bir etki alanı yaratıp o etki alanını içinde değişken tanımladık yukarıdaki gibi. Ekrana ne çıkacak? 3 tabii ki.
Kod:
int main()
{
   
   
        int sayi1 = 4;
        if (1)
        {
            int sayi1 = 2;
           
            if (1)
            {
                int sayi1 = 3;
            }
            cout << sayi1;
        }
   
}
Peki burada ne çıktı alacağız? Dikkat edersiniz cout komutunu en son tanımlanan etki alanını dışında. main fonksiyonun içindeki ilk etki alanında tanımladık. Bu durumda ekrana 2 çıkar. Çünkü küme parantezi kapanınca 3 değerini taşıyan sayi1 etkisiz kaldı. Ne demiştik? Değişkenin tanımlandığı etki alanın kapama işareti yani ters küme parantezi } geldiği zaman değişkene veda ederiz. Bize cout komutunu 3 değerini taşıyan sayi1 değişkenin etki alanının dışında tanımladığımız için 3 değerini taşıyan sayi1 değişkeni etkisiz kaldı. Ama 4 değerini taşıyan değişkeninin etki alanı ve 3 değerini taşıyan değişkenin etki alanı sonlanmamış görüyorsunuz.(cout komutunu koyduğumuz yere kadar sonlanmamış yani) Bu durumda ekrana ne çıkacak? ikisinin arasında en son tanımlanan 2 değerini taşıyan olduğu için ekrana 2 çıkacak. Dikkat etmeniz gereken şey etki alanlarıdır değişken ezme konusunda.

Bu ders bu kadar.
 

blade20090999

Kızıltaş Madencisi
En iyi cevaplar
0
ı dont know c++ c# biliyorum. :) oda şuanki tüm güncel oyun motorlarında c# olduğu için
 

blade20090999

Kızıltaş Madencisi
En iyi cevaplar
0
Aaaa pls yapma burda c ve java kavgasını :) 2 side benzer diller okdr forumda tartışıldı burdadamı tartışak :) plugin için java masaüstü programı için c# benim için en azından böyle tabi main c# onla başladımda olsun :)
 

Life Hunter

Lapis Toplayıcısı
En iyi cevaplar
0
Bana kalsa C# vs Java mevzusunu bütün gün tartışabilirim ama yeri değil haklısın :)
 
Üst