SensiZOlmuyoR.org  
Geri git   SensiZOlmuyoR.org > Pc - Bilgisayar > Programlama > C ve C++

 
Ücretsiz Siteye Üye Olmak için Tıklayın !!

Uyarılar

SensizOlmuyor.oRg Ailesi olarak dosya ve resim uploadlarınız için www.upload.gen.tr sitesini öneriyoruz!
Cevapla
 
LinkBack Konu Araçları Stil
Eski 07-02-2008, 21:16   #1 (permalink)
Süper Mod
 
WaMPiR_CaDı - ait Kullanıcı Resmi (Avatar)
 
Üyelik tarihi: 21-11-2007
Nerden: ewden(:
Mesajlar: 5.971
Konular: 3047
Üye No: 11341
Ruh halim:
Rep Gücü : 394
Rep Puanı : 7406
Rep Seviyesi : WaMPiR_CaDı has a reputation beyond reputeWaMPiR_CaDı has a reputation beyond reputeWaMPiR_CaDı has a reputation beyond reputeWaMPiR_CaDı has a reputation beyond reputeWaMPiR_CaDı has a reputation beyond reputeWaMPiR_CaDı has a reputation beyond reputeWaMPiR_CaDı has a reputation beyond reputeWaMPiR_CaDı has a reputation beyond reputeWaMPiR_CaDı has a reputation beyond reputeWaMPiR_CaDı has a reputation beyond reputeWaMPiR_CaDı has a reputation beyond repute


yasaksiz youtube
Standart C ipuçları ve Hileleri


C�de programlama yaparken kullanabileceğiniz bazı ipuçlarından ve hilelerden bahsetmek istiyorum. Burada anlatacaklarımdan bazıları genel kurallar içinde C programı yazmaya aykırı kod parçaları da olabilir ama adı üstünde, konumuz: "Hileler".

Eğer bir değişkenin byte�larını ayrı ayrı değiştirmek istiyorsanız, bunu yapmanın kolay bir yolu var. Örneğin x değişkeninizi unsigned int olarak tanımladınız. Böylelikle x, 2byte�lık bir değişken olmuştur. x değişkeninin 2 byte�ını da ayrı ayrı değiştirmek için, char kullanılır. Char, her zaman bir byte olur. Her byte�ı ayrı ayrı ele alınıp değiştirmek için derleyiciye o byte�ların char olduğunu göstermemiz gerekir ve sonra da değişiklik yapmamız gerekir:
İlk byte�ı 4 yapalım: *((unsigned char *)&i) = 4;

İkinci byte�ı 15 yapalım: *(((unsigned char *)&i) + 1) = 15;

Intel tabanlı bilgisayarlarda bu işlemler x�in değerini şöyle değiştirecektir: 15*256+4=3844

Bu hileyi kullanırken bir çok bilgisayar sisteminde değişken tiplerinin farklı kaydedildiklerine dikkat edin. Mesela bir başka sistemde sonuç: 4*256+15=1039 olabilir! Değişken tiplerinin uzunlukları da standard değildir. Bir tamsayı 2 byte iken başka sistemde 1 byte olabilir!

C�deki çok yararlı işlemlerden biri de ?: dir. Örneğin;
i = i == 4 ? 0 : i + 1; kod satırında I 4�ise I�yi sıfırlar, değilse o anki değerine 1 ekler.

Eğer bir değişkenin adres değerini gerçek değerinden daha fazla kullanıyorsanız, her seferinde & işaretini kullanmak yerine 1 elemanlı bir dizi tanımlayabilirsiniz:
int main(void)

Code:

{
void oku(int *toread), degistir(int *toread), islem(int *toread);

int deger;

oku(°er);

degistir(°er);

islem(°er);

printf("%d", deger);
}


yerine;


Code:

int main(void)
{
void oku(int *toread), degistir(int *toread), islem(int *toread);

int deger[1];

oku(deger);

degistir(deger);

islem(deger);

printf("%d", *deger);
}


kullanılabilir.

Sadece iki değişken ile swap(yer değiştirme) işleminin yapabilir misiniz? İşaretçiler ile biraz düşünülürse bu mümkün!
a�nın 1, b�nin 2 olduğunu düşünürsek;

a^=b;

b=^a;

a^=b;

Bu işlem üçüncü bir değişkene gerek kalmadan iki değerin yerini değiştirmemizi sağlar. Ayrıca bu işlem çok hızlıdır. Çünkü;

a�nın 9 (1001 ikilik sistemde), b�nin de 6 (0110 ikilik sistemde) olduğunu varsayalım:

kodda adım adım ilerlersek,

a^=b; : a=a XOR b, a = 1111

b=^a; : b=a XOR b, b=1001

a^=b; : a=a XOR b, a=0110

Sonuç, yer değiştirme tamamlandı!!

İki değer arasında değişip duran bir değişken nasıl elde edilir? Bunu bir örnekle açıklayalım. Örneği istenilen iki değer çevirmek gerçekten de çok kolay. Örneğimizde 8 ve 3 değerlerini seçelim.


Code:

int a = 3, i;

for (i = 0; i < 10; i++)
{
a = 11 - a;

printf("a = %d\n", a);
}


Bu kod bizlere 3 ve 8 arasında değişip duran a değişkenini göstermektedir.

a, başlangıçta 3 yapılır. Sonra bir for döngüsünde a değişkenine 11-3 değeri atanır ve 8

olur. Döngünün diğer tekrarında a değişkenine 11-8 değeri atanır ve böyle sürüp gider.

Bu algoritma için şöyle bir genel formül yaratabiliriz:

x ve y arasında değişen bir değişken için, sonuç = (x + y) - sonuç �tur.
__________________
BeLqide bu dünya başqa bir gezegenin cehennemidir..!!?

SEN GİDİNCE YALNIZ KALACAĞIM.YALNIZLIKTAN KORKMUYORUM DA YA CANIM ELLERİNİ TUTMAK İSTERSE..


SiLemıyosaN KaRaLayacaksıN...GideRkeN Kaç Kere BaktıN ArkaNa?

!..... Wayyy Beee!!! İçimizdeki Çocuk Da Gayrı Meşru Çıktı .....!

Mrs. Wampir€


SensizOlmuyor.oRg Ailesi olarak dosya ve resim uploadlarınız için www.upload.gen.tr sitesini öneriyoruz!
WaMPiR_CaDı isimli üyemiz çevrimdışıdır. (Offline)  
Bu Mesajı Google'a Ekle!Bu Mesajı FaceBook'da Paylaş!
Alıntı ile Cevapla
Cevapla

Bu konunun kısa yolunu aşağıdaki sitelere ekleyebilirsiniz!


Konu Araçları
Stil

Yetkileriniz
Konu Açma Yetkiniz Yok
Mesaj Yazma Yetkiniz Yok
Eklenti Yükleme Yetkiniz Yok
Mesajınızı Değiştirme Yetkiniz Yok

BB code is Açık
Smileler Açık
[IMG] Kodları Açık
HTML-KodlarıKapalı
Trackbacks are Açık
Pingbacks are Açık
Refbacks are Açık

Benzer Konular
Konu Konuyu Başlatan Forum Cevaplar son Mesaj
Cs 1.6 Hileleri 4 in 1 wanted Counter Strike 5 20-07-2008 19:45
msn hileleri game ower Msn, Icq, Yahoo Messenger 1 08-07-2008 20:15
SX1 ciler buraya ipuçları fln fln!! ShockWave Siemens 0 15-04-2008 20:51
Vista’dan hayatınızı kolaylaştıracak ipuçları! WaMPiR_CaDı Windows Vista 1 17-01-2008 15:18
Amatör kameramanlar için en iyi ipuçları Bilgisayarcı Bilgisayar Haberleri 0 16-10-2007 15:10


Tüm Saatler GMT +3. Şuan Saat: 14:49 .
(Türkiye için GMT +2 seçilmelidir.)


Powered by vBulletin Version 3.7.3
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.1.0
www.SensiZOlmuyoR.org © 2007 - 2008


* Metin2 * Trendy Bayan