Picproje Elektronik Sitesi

PROGRAMLAMA DİLLERİ => C/C++ => Konuyu başlatan: dumansiz - 30 Mayıs 2012, 21:46:48

Başlık: unsigned long d = 0x800000UL ???
Gönderen: dumansiz - 30 Mayıs 2012, 21:46:48
Merhaba;
Bir kodda böyle bir ifade gördüm:

unsigned long d = 0x800000UL

UL herhalde unsigned long un kısaltılması.
Ama bu UL neden konuluyor? Zaten başta unsigned long denmiş.
Konulmaması sorun mu teşkil eder?
Başlık: Ynt: unsigned long d = 0x800000UL ???
Gönderen: elektronikhobi - 30 Mayıs 2012, 22:18:32
C++ için bir sayıyı sekizli olarak göstermek için 0 önekini kullanır. Yani 0177 sekizlik düzende bir sayıdır.

Onaltılık sayı düzenini göstermek için de 0x ya da 0X ön ekini kullanır. 0x2B3 gibi..

unsigned long 0 ila 4294967295 arasında değer alabilir.

Sizin verdiğiniz örnekte sayı onaltılık sayı sisteminde yazıldığı için kütüphaneyi yazan kişi özellikle sayının işaretsiz olduğunu belirtmek için kullanmış olabilir.

Başlık: Ynt: unsigned long d = 0x800000UL ???
Gönderen: Tagli - 31 Mayıs 2012, 00:12:07
Zamanında bu ULL meselesi yüzünden bir sıkıntı yaşamıştım. Sorunu ve çözümü bu başlıkta (https://www.picproje.org/index.php/topic,32584.0.html) dile getirmiştim. İncelenmesi faydalı olabilir.

Sanırım bunlara özellikle pre-processor ifadelerinde kullanırken dikkat etmek gerekiyor. Yani makrolarda ve #define ile yapılan tanımlamalarda.