C Programlama diliyle şamatalar

Başlatan z, 23 Ekim 2011, 15:32:04

sayment

Alıntı yapılan: bunalmis - 25 Ekim 2011, 22:25:27
Kritik bir soru

int a;

void main()
{
    static int a;

    a=1;
//  Global a değişkeninin içeriğini nasıl öğrenirsiniz?
    ....
}

A değişkeninin adresini B değişkenine kaydedip, içerik gerektiğinde de adresi kontrol ederek olabilir mi?

yamak

Alıntı yapılan: papsukkal - 26 Ekim 2011, 00:32:29
kaydırma işlemini anladım
aslında sorduğum şuydu...

registerin 0. bitinde 1 değeri var ve biz bunu korumak istiyoruz

a=1<<4;  ile değer yüklersek anladığım kadarı ile işler karışır


bu sorumun cevabını buldum.

en soldaki bit 1 ise değer " - " dir.

register ın herhangi bi bitindeki verinin değişmesini istemiyosanız.or işlemi ile register a yükleme yapmalısınız.
Örnek:
GPIOD->MODER |=1<<4; bu şekilde yüklendiğinde sadece 4. bit 1 yaparsınız geri kalan bitler değişmez.
GPIOD->MODER=1<<4; deseydiniz registerın değeri bu işlem sonunda 16 olur.

muhittin_kaplan

Bu işlemin adı maskelemedir.
OR la yada AND le yapılabilir. OR yaparsanız 0 la maskelemeniz AND le yaparsanız 1 ile maskelersiniz.
Yukarda (Eğer Yanlışsam Lütfen Düzeltiniz) 32bitlik bit sayıda 1 i 4 kez sola kaydırıp Orlayarak registerin içerisine atıyorsunuz. Buna bağlı olarak (Or işleminde 1 yutan dır sonuç da devamlı 1 çıkar) 4. bit lojik 1 oluyor.

mozkan87

Alıntı yapılan: muhittin_kaplan - 26 Ekim 2011, 00:45:16
Bu işlemin adı maskelemedir.
OR la yada AND le yapılabilir. OR yaparsanız 0 la maskelemeniz AND le yaparsanız 1 ile maskelersiniz.
Yukarda (Eğer Yanlışsam Lütfen Düzeltiniz) 32bitlik bit sayıda 1 i 4 kez sola kaydırıp Orlayarak registerin içerisine atıyorsunuz. Buna bağlı olarak (Or işleminde 1 yutan dır sonuç da devamlı 1 çıkar) 4. bit lojik 1 oluyor.

Evet doğru söylüyorsunuz ancak 4. biti 0 yapmak istediğimiz zaman AND kullanmak daha mantıklı

papsukkal

mesele anlaşıldı. teşekkür ederim

CoşkuN

Global değişkenlerle ilgili birşey eklemek istiyorum: Globalleri el bombasına benzetebiliriz. Birçok işinizi yapmaya yarayan güçlü araçlardır ama aynı zamanda tehlikelidirler. Elinizde de patlayabilirler. Kullanırken dikkatli olmak lazım.

z

Biraz acabilirmisin? Neden patlar?
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

SERRO EFE

Bende merak ettim neden "patlar" sonuçta kullandımız basic derleyicilerinin nerdeyse hepsi global değişkenle çalışmak zorunda bırakıyo kullanıcıları..

CoşkuN

Patlar'dan şunu kastettim: Global değişkenlere herkes her yerden ulaşabildiği için hatalara yol açma olasılığı yüksektir. Özellikle multitaskin uygulamalarda...

z

#84
Global değişkenler duyuru panosuna asılmış kağıt parçası gibidir.

Her önüne gelen kağıttaki yazıyı silip yenisini yazabilir. Bu açıdan bakınca, şakacı çocuklar varsa tabiki tehlikelidir.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

muhittin_kaplan

Hocam Sorunuzun Cevabı nedir? yani statik ile global tanımlamalar a ulaşımla alakalı olan.

GreeN

Alıntı yapılan: bunalmis - 25 Ekim 2011, 22:25:27
Kritik bir soru

int a;

void main()
{
    static int a;

    a=1;
//  Global a değişkeninin içeriğini nasıl öğrenirsiniz?
    ....
}

Pointer kullanarak 2 değişkeninde adresleri yine global 2 farklı adreste tutulur , dilediğimiz yerde tuttukları değerleri kullanabiliriz.
Terörü Lanetliyoruz.

z

Alıntı YapPointer kullanarak 2 değişkeninde adresleri yine global 2 farklı adreste tutulur , dilediğimiz yerde tuttukları değerleri kullanabiliriz.

Bu iki a değişkeninin adreslerini main fonksiyondan nasıl öğreniriz?

Eğer harici bir fonksiyon yardımıyla öğrenirim derseniz sorunun anlamı kalmaz.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

muhittin_kaplan

Sonuçta Static A nın yaşam alanında Global A ya ulaşlmasını istiyorsunuz. mu ? :S

z

#89
Soruda o isteniyor. C++ da bu öğrenilebilir mi?
Bana e^st de diyebilirsiniz.   www.cncdesigner.com