Yardım long long yang düzenlemesi hk.

Konu sahibi bu konuda soru soruyor. Sorusu ile ilgili bilgisi olanların yanıtlamasını bekliyor.

brave

Üye
Üye
Mesaj
115
Çözümler
5
Beğeni
25
Puan
479
Ticaret Puanı
0
Long long yang düzenlemesi yaparken aklıma takılan bir konu oldu. Çok fazla c++ bilgim yok.

PointChange değerlerini GoldChange ile değiştirirken incelediğim kaynak kodlarında bazı yerlerde GoldChange ile birlikte static_cast kullanımı varken bazı yerlerde kullanılmamış.

Örneğin

1. Kullanım:
C++:
ch->GoldChange(-dwPrice);

2. Kullanım:
C++:
ch->GoldChange(static_cast<long long>(-dwPrice));

Bazı yerlerde kullanılıp bazı yerlerde kullanılmamış olması incelediğim kaynak kodundan mı kaynaklanıyor yoksa bunun farklı bir durumu mu var ? Bu konuda bilgi birisi aydınlatabilir mi?
 
Bir yerde herhangi bir tipte tanımlanan değişkeni, kullanılmak istenen yerde, istenilen türe uygun şekilde dönüştürmek için kullanılıyor.
Veya çağrılan fonksiyonun parametresi ile uyuşması için de kullanılabiliyor.

Örneğin DWORD dwPrice; şeklinde bir tanım olsun.
Bunu gerekli yerlerde long long olarak çağırıp kullanmak için verdiğin koddaki gibi static_cast ile dönüştürme yapılır.
Bunun haricinde alternatif olarak, eğer mümkünse doğrudan DWORD dwPrice; tanımını long long dwPrice; olarak değiştirmek de çözüm olabilir.
Bu şekilde yaparsak static_cast dönüşümüne gerek kalmayacaktır.

Daha iyi anlaman için şu basit örneğe bakabilirsin:
C++:
using namespace std;
int main()
{
    float a = 3.5;
    int b = static_cast<int>(a);
    cout << b; // b yi ekrana yazdır
}

Burada ikince satırda a değişkeni static_cast ile float'tan int'e dönüştürüldüğü için sonuç olarak ekrana 3.5 değil, 3 yazacaktır.
Yukarıda yaptığım açıklamaya hitaben; burada static_cast kullanmadan direkt float a kısmını long long a olarak da değiştirebiliriz.
Tabi bu kodun kullanım amacına göre değişen bir durum.
 
Linkleri görebilmek için giriş yap veya kayıt ol.
buradan detaylı bilgi edinebilirsiniz
Bir yerde herhangi bir tipte tanımlanan değişkeni, kullanılmak istenen yerde, istenilen türe uygun şekilde dönüştürmek için kullanılıyor.
Veya çağrılan fonksiyonun parametresi ile uyuşması için de kullanılabiliyor.

Örneğin DWORD dwPrice; şeklinde bir tanım olsun.
Bunu gerekli yerlerde long long olarak çağırıp kullanmak için verdiğin koddaki gibi static_cast ile dönüştürme yapılır.
Bunun haricinde alternatif olarak, eğer mümkünse doğrudan DWORD dwPrice; tanımını long long dwPrice; olarak değiştirmek de çözüm olabilir.
Bu şekilde yaparsak static_cast dönüşümüne gerek kalmayacaktır.

Daha iyi anlaman için şu basit örneğe bakabilirsin:
C++:
using namespace std;
int main()
{
    float a = 3.5;
    int b = static_cast<int>(a);
    cout << b; // b yi ekrana yazdır
}

Burada ikince satırda a değişkeni static_cast ile float'tan int'e dönüştürüldüğü için sonuç olarak ekrana 3.5 değil, 3 yazacaktır.
Yukarıda yaptığım açıklamaya hitaben; burada static_cast kullanmadan direkt float a kısmını long long a olarak da değiştirebiliriz.
Tabi bu kodun kullanım amacına göre değişen bir durum.

Bilgilendirmeleriniz için teşekkür ederim. Zaten long long olarak tanımlanan bir değerin neden tekrar static cast ile long longa dönüştürüldüğünü düşünüyordum. Anladığım kadarıyla gereksiz bir işlemmiş.
 
Geri
Üst