C Programlama diliyle şamatalar

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

z

#270
@Sayment Cevaplarinin dayandigi noktayi acikla.

Asagidaki satir ne is yapar?

while(A++==2);
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

sayment

while((A&2)==2);

(Ave2) işleminin sonucu ikiye eşit ise while parantezi doğru olur diye düşündüm

while(A&2==2);

Bu soruda da 2==2 doğru olduğundan A 0dan farklı olan değerlerde while parantezinin içerisi doğru olur dedim.
İşlemler sağdan sola doğru yapılır diye biliyorum o yüzden böyle dedim.

sayment

while(A++==2);


A'yı 1 arttır değer 2ye eşit ise parantez içi doğru olur diyeceğim ama bu seferde işlemler sağdan sola olmamış oluyor. Söylediğim ile çelişiyorum.
Yanlış biliyorum doğrusu nedir ?

omereliusuk

inşallah doğrudur.

bu şuna döndü
a+++b
ne oldu şimdi?
arada bir boşluk bıraksaymışız neyin ne olduğunu daha iyi anlayacaktık ama neyse:)
önce
while(a==2)

doğruysa içeri giriyor.
sonra
a zaten 1 değer armıştır. (a+1)==2 değerine bakıyor.

z

      a++==2;

Bu ne anlama gelir?
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

sayment

Hocam yanlışımızı söyleseniz de düzeltsek

z

#276
Keille de baktigimda;

while(A&2==2)  ile while (A&1) ayni

2==2 true yani 1 o halde A&1

--------------------

while (a|2==3);

2 farkli 3 olduguna gore false yani 0

a|0=a

o halde

while (a|2==3)  ile while (a!=0) ayni anlama geliyor

---------------

a+=3==3;  a=a+1 demek

----------------

Asagidaki kodlara en azindan warning almayi beklerdim.

a++==2 ile a++ ayni
a++==3 ile a++ ayni
a++==4 ile a++ ayni

Bana e^st de diyebilirsiniz.   www.cncdesigner.com

muhittin_kaplan

verildimi hatırlamıyorm. kitap kucalarken adres döndüren fonksiyonlar dan bahsediyordu.
*Adres(* Int a,* Int b)


böyle bir fonkisyon nasıl çalışır ?

mcan

#278
Soruldumu bilmiyorum şöyle bir sorum var. C dilinde

typedef struct _A{
  DWORD x;
  DWORD y;
} BT;

Şeklinde struct yapımız olsun

Bir başka yapımızda bu şekilde olsun

typedef struct _TLE {
   BT* xyz_;
        DWORD  abc;
}zte;

Programda bir tane pointer degisken olusturalim

zte *degisken;

Şimdi başlangıcda her değişkeni initial ettik diyelim. Degiskenin icindeki xyz nin x ine nasıl ulaşırız?
*(degisken->xyz_.x) = 0 ; desek olmuyor . Calismiyor...

Simdi aklima geldi degisken->xyz_->x = 0 ; gibi bir kullanim dogrumudur?

Bu pointerlari kullanmadan once baslangic degerlerinin atandigini nerden anlariz? NULL kelimesini 0 olarak tanimlarsak pointer degeri de sifir ise bu pointer daha baslangic degeri atanmamis diyebilirmiyiz? Peki ya gercekden pointer remin ilk adresini point ediyorsa bu iki olayi nasil ayird ediyorlar?

Klein

Evet -> şeklinde kullanım doğrudur.
Eğer işaretçi statik veya global tanımlı ise, muhtemelen derleyici ona ilk değer olarak null verecektir. Ama işaretçi yerel ise ilk değer ataması yapılmaz. Bu yüzden kendimiz yapmalıyız. Bir işaretçiye değer atanıp atanmadığını kontrol etmenin benim bildiğim tek yolu null olup olmadığına bakmak.  İşaretçi gerçekten 0 adresini mi gösteriyor? yoksa değer atanmamış mı? anlamanın bir yolu yok bildiğim kadarıyla.

mcan

Cevap icin sağolun hocam...


Arkadaşlar bir bilgi vermek istiyorum keil ile ilgili yada c ile ilgili.

Bir fonksiyon oluşturdum ve bu fonksiyonun değişkenleri structure pointer. Örneğin fonksiyon(PTR* X)  gibi olsun.
Bu fonksiyonun kendisini yazmadan önce deklare etmedim, Main içinde bu fonksiyona PTR* değilde INT türünde pointer girdim.Sonuçda warning ile işlem bitti.Şans eseri okuyacağım datanın boyutu tam olarak int kadar dı ki bir süre sorunu anlamadım.Ancak warningi yok etmek için fonksiyonu deklare ettiğimde fonksiyona yanlış türde pointer atadığım için error mesajı aldım ve program derlenmedi.Sizde karşılaşabilirsiniz.

-Hasan-

Alıntı Yapint *P;

P=(int*) 0x42345678; 
*P=0x12345678;

Merhabalar;
Pointer konusunda anlamadığım bir şey var; yukarıdaki int ' lerin manasını anlayamadım:

Bu int ne demek?
Bu int ne demek?

(birisi bu gösterici 32 bitlik adres gösterebilir, birisi de buraya 32 bit tam sayı yüklenebilir demek mi yoksa?)

mcan

Alıntı yapılan: -Hasan- - 20 Ocak 2012, 14:02:11
Merhabalar;
Pointer konusunda anlamadığım bir şey var; yukarıdaki int ' lerin manasını anlayamadım:

Bu int ne demek?
Bu int ne demek?

(birisi bu gösterici 32 bitlik adres gösterebilir, birisi de buraya 32 bit tam sayı yüklenebilir demek mi yoksa?)

Birinci int , int tipi değişkeni point eden bir pointer oluşturuyor. Diğer int ise sabiti int tipinde bir pointer ile işaretliyor.

muhittin_kaplan

c dosyayı import ediyoruz hazır yazılmış  fonksiyonu vs kullanmak için peki "H" dosya nedir
lütfen header dosya demeyin. neden h include yapıyoruz ?
aklıma şu geliyor;
c yukardan aşağıya derleniyor, çağrılan bir fonksiyon yukarıda olması gerekiyor. bunu aşmak için fonksiyonlara ön tanımlama yapılıyor. bu header dosya bunun için mi kullanılıyor ?

z

Source kodlarinda gorunmesini istemedigin, kafa karistiracak satirlari, tanimlamalari, degiskenleri, hatta alt programlari gozonunden uzaklastirmak icin kullaniyoruz.

Istiyorsan header dosya icerigini C kodlarinin tepesine yapistir ve header dosyayi include etme.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com