C++ for içinde değişken tanımlama mümkün mü?

Başlatan tekosis, 12 Şubat 2018, 15:03:02

tekosis

Her for döngüsü için bir yerel yada gloabal değişken kullanmak program uzadıkça zahmetli ve riskli oluyor. Başka yerde kullandığım bir değişkeni fark etmeden yeni yazdığım döngüde de kullanabiliyorum. Bu zamanla takibi zahmetli ve zor hale geliyor. Aşağıdaki tanımlamayı java kabul ediyor ama kullandığım derleyici olan mikroc pro for arm'de yaptığımda kabul etmedi. Buna benzer bir yöntem için ne tavsiye edersiniz?
Yapmayı istediğim şey;
for( int i =0 ; i<100 ; i++)
{
~~~~~
~~~~
    ~~~~~~
}
İlim ilim bilmektir, ilim kendin bilmektir, sen kendin bilmezsin, bu nice okumaktır.

controller

Mikroc C89 standardını destekliyor sanırım. for içinde değişken tanımlamak için en az C99 veya C++ olması lazım.
Hesabım OG tarafından haksız bir şekilde pasif yapılmıştır.

dumansiz


Tagli

Belki derleyici ayarlarından C99 standartını seçmek mümkün olabilir. Bir araştırmak lazım.
Gökçe Tağlıoğlu

OptimusPrime

{
int i;

for(i =0 ; i<100 ; i++){~~~~~~~~~    ~~~~~~}
}



hayirli olsun. :)
https://donanimveyazilim.wordpress.com || Cihân-ârâ cihân içredir ârâyı bilmezler, O mâhîler ki deryâ içredir deryâyı bilmezler ||

mir_as82

Güzel çözüm optimus : )). Scope tan çıkınca zaten olmayacak

tekosis

İlim ilim bilmektir, ilim kendin bilmektir, sen kendin bilmezsin, bu nice okumaktır.

ogy

İki farklı fonksiyonun içerisinde aynı isimle tanımlanmış yerel değişkenler birbirleriyle çakışır mı?

Tagli

Hayır, çakışmazlar. Scope'ları farklıdır çünkü. Ancak aynı isimle bir üst scope'ta tanımlanmış bir değişken var ise eğer onu bastırırlar.
Gökçe Tağlıoğlu

tekosis

int i;
void main() {
       i=5;
       {
           int i;
            for( i=100;i<105;i++)
             {
                          }
                                         }
            i++;
            while(1){}
}



hocam yukarıdaki şekilde hem global hem de scop içinde tanımlanmış i değişkeni var. for döngüsü bitip scop içinden çıkınca i değişkeni i++; kodundan sonra 106 değerini alıyor. yani scop içinde tanımlama mümkün ama daha önce tanımlanmış aynı isimde bir değişken var ise onun değerini değiştiriyor. debugger den bakınca iki "i" değişkeni de aynı bellek adresinde tanımlanıyor.

Şimdi dikkatli okudum @Tagli hocam da aynı şeyi demiş zaten.
İlim ilim bilmektir, ilim kendin bilmektir, sen kendin bilmezsin, bu nice okumaktır.

ogy