Çözüldü Max item 200.000 stack için hangi veri türü mantıklı?

  • Konuyu açan Konuyu açan asilords
  • Açılış Tarihi Açılış Tarihi
  • Yanıt Yanıt 7
  • Gösterim Gösterim 80
Bu konu çözüme ulaştırılmıştır. Çözüm için konuya yazılan tüm yorumları okumayı unutmayın. Eğer konudaki yorumlar sorununuzu çözmediyse yeni bir konu açabilirsiniz.
Durum
İçerik kilitlendiği için mesaj gönderimine kapatıldı.

asilords

MT Üye
MT Üye
Mesaj
376
Çözümler
13
Beğeni
101
Puan
749
Ticaret Puanı
0
Şuan short kullanıyorum 65.535 sınırı var 200.000 yapmak istiyorum, bunun bir üstü 2.147.483.647 da fazla değer aralığı başka çözümü yok mudur?
zaten sınırlandırıyorum ama bu kadar değer fazla veri türü kullanmak istemiyorum.
 
Çözüm
Açıklama için sağolun ama kendi veri türümü yapabileceğimi sanmıyorum, 200.000 için 2.147.483.647'lik veri türü kullanmamda bir sorun olur mu?
Hayır sorun olmaz. C++ da veri tipleri 8bit, 16bit, 32bit, 64 bit şeklinde sabit bir kurala sahiptir. Arası-ortası falan yok maalesef.

short = 16bit
int = 32bit
sonrasında da zaten long vb. 64bit geliyor.

Dolayısıyla böyle ince düşündüğümüz noktalarda zaten yapabileceğimiz pek bir şey yok. Aralarından en uygunu neyse onu seçmek zorundayız :)
Eğer yaptığın işlemler uygunsa bu yöntemi kullanabilirsin; standart bir veri tipi kullanmak yerine length.h içindeki GOLD_MAX verisi gibi kendi sabit verini oluşturup üst sınır olarak kullanabilirsin.

Bunun dışında alternatif var elbette ancak gereksiz kod kalabalığı getirecektir.
 
Eğer yaptığın işlemler uygunsa bu yöntemi kullanabilirsin; standart bir veri tipi kullanmak yerine length.h içindeki GOLD_MAX verisi gibi kendi sabit verini oluşturup üst sınır olarak kullanabilirsin.

Bunun dışında alternatif var elbette ancak gereksiz kod kalabalığı getirecektir.
Gold max değer aralığı standart int değilmi 2.147.483.647 ü geçmiyordu?
 
Eğer yaptığın işlemler uygunsa bu yöntemi kullanabilirsin; standart bir veri tipi kullanmak yerine length.h içindeki GOLD_MAX verisi gibi kendi sabit verini oluşturup üst sınır olarak kullanabilirsin.

Bunun dışında alternatif var elbette ancak gereksiz kod kalabalığı getirecektir.
Bu konuyla ilgili bir rehber varmı acaba?
 
Gold max değer aralığı standart int değilmi 2.147.483.647 ü geçmiyordu?
Evet, enum içinde olduğunu unutmuşum bir anlığına kusura bakma. Bunun haricinde kullanabileceğin iki yöntem var:

1-) Kendi sınıfını/yapını oluşturmak. Ki bu çok zahmetlidir çünkü kendi veri tipini oluşturacağın için tüm mantıksal operatörleri de elle tanıtman gerekecek.

2-) Adrese başvurmadan constexpr kullanmak.
Sabit bir değer olarak tanımlandığı ve çalışma zamanında değiştirilmeye vb. çalışılmadığı sürece derleyici tarafından programa bir değişken olarak(int, long vb.) değil, sabit bir veri olarak gömülür. Kullanılan senaryolara göre belleği kullanır veya kullanmaz.

Mesela:
C++:
Genişlet Daralt Kopyala
constexpr int a = 10;
int b = 5;
TraceError("%d", a + b);
Burada b değişkeni için mutlak bellek tahsis edilmişken(int), a değişkeni bir sabit değer olarak tutulur. Ve burada çıktı 15 olur.
Yani burada kısaca, bir int ile bir sabit değeri toplamış oluyoruz.

Ancak & gibi operatörler ile adres çekersen;
C++:
Genişlet Daralt Kopyala
constexpr int a = 10;
int b = 5;
TraceError("%d", &a + b);
Bu durumda program bellek adresini çekmek zorunda olacağı için hem sonuç farklı olacak, hem de sıradan bir "int" tanımı gibi otomatik olarak bellekte yer tahsis edilmiş olacak.

Adrese başvurmadan sadece sabit bir üst sınır olarak kullanıldığında sıradan int tanımına göre daha kullanışlı olabilir diye düşünüyorum.
 
Evet, enum içinde olduğunu unutmuşum bir anlığına kusura bakma. Bunun haricinde kullanabileceğin iki yöntem var:

1-) Kendi sınıfını/yapını oluşturmak. Ki bu çok zahmetlidir çünkü kendi veri tipini oluşturacağın için tüm mantıksal operatörleri de elle tanıtman gerekecek.

2-) Adrese başvurmadan constexpr kullanmak.
Sabit bir değer olarak tanımlandığı ve çalışma zamanında değiştirilmeye vb. çalışılmadığı sürece derleyici tarafından programa bir değişken olarak(int, long vb.) değil, sabit bir veri olarak gömülür. Kullanılan senaryolara göre belleği kullanır veya kullanmaz.

Mesela:
C++:
Genişlet Daralt Kopyala
constexpr int a = 10;
int b = 5;
TraceError("%d", a + b);
Burada b değişkeni için mutlak bellek tahsis edilmişken(int), a değişkeni bir sabit değer olarak tutulur. Ve burada çıktı 15 olur.
Yani burada kısaca, bir int ile bir sabit değeri toplamış oluyoruz.

Ancak & gibi operatörler ile adres çekersen;
C++:
Genişlet Daralt Kopyala
constexpr int a = 10;
int b = 5;
TraceError("%d", &a + b);
Bu durumda program bellek adresini çekmek zorunda olacağı için hem sonuç farklı olacak, hem de sıradan bir "int" tanımı gibi otomatik olarak bellekte yer tahsis edilmiş olacak.

Adrese başvurmadan sadece sabit bir üst sınır olarak kullanıldığında sıradan int tanımına göre daha kullanışlı olabilir diye düşünüyorum.
Açıklama için sağolun ama kendi veri türümü yapabileceğimi sanmıyorum, 200.000 için 2.147.483.647'lik veri türü kullanmamda bir sorun olur mu?
 
Açıklama için sağolun ama kendi veri türümü yapabileceğimi sanmıyorum, 200.000 için 2.147.483.647'lik veri türü kullanmamda bir sorun olur mu?
Hayır sorun olmaz. C++ da veri tipleri 8bit, 16bit, 32bit, 64 bit şeklinde sabit bir kurala sahiptir. Arası-ortası falan yok maalesef.

short = 16bit
int = 32bit
sonrasında da zaten long vb. 64bit geliyor.

Dolayısıyla böyle ince düşündüğümüz noktalarda zaten yapabileceğimiz pek bir şey yok. Aralarından en uygunu neyse onu seçmek zorundayız :)
 
Çözüm
Hayır sorun olmaz. C++ da veri tipleri 8bit, 16bit, 32bit, 64 bit şeklinde sabit bir kurala sahiptir. Arası-ortası falan yok maalesef.

short = 16bit
int = 32bit
sonrasında da zaten long vb. 64bit geliyor.

Dolayısıyla böyle ince düşündüğümüz noktalarda zaten yapabileceğimiz pek bir şey yok. Aralarından en uygunu neyse onu seçmek zorundayız :)
Teşekkürler bilgiler için.
 
Durum
İçerik kilitlendiği için mesaj gönderimine kapatıldı.
Geri
Üst