Haberler:

Forum kuralları güncellendi LÜTFEN  okuyunuz:  https://bit.ly/2IjR3ME

Ana Menü

for döngüsü 'U'

Başlatan armsistem, 10 Aralık 2012, 19:52:49

armsistem

Arkadaşlar merhaba , 500000 sonundaki u ne analama gelir ?

for (i = 0; i < 500000U; i++);

LukeSkywalker


armsistem

U olsa ne olur olmasa ne olur.

Tagli

Burada pek birşey değişeceğini sanmıyorum. El alışkanlığı ile yazılmış gibi.

Ancak benzer ifadeler preprocessor komutlarında veya makrolarda geçtiğinde sorun oluyor. #define sayi 500000U gibi. Bunların bir varsayılan veri boyutu var. Atıyorum 2 byte olsun. Bu durumda 65535'ten büyük sayılar tanımlandığında taşma yapıyor ve değer bambaşka birşey oluyor. Bu sorunu daha önce yaşamıştım, ve bu başlıkta değinmiştim.
Gökçe Tağlıoğlu

yamak

Hocam C de sabit sayılar eğer int sınırları içindeyse int olarak algılanır eğer int sınırının dışında ise long int olarak algılanır.Ama ben iki diyeli 2 tane int sınırları içindeki sayıyı topluyorum ve sonuc int sınırının dışına çıkıyo.Bu durumda derleyici tür dönüşümü yapacağından veri kaybı yaşamış olacağız.Fakat toplanan iki sayıdan birinin sonun L ve UL gibi ifadeler koyarsak bu durumda çıkan sonuç büyük olan türe dönüştürüleceği için bi sorun olmayak.
Mesela int in 2 byte kapladığı bir sistemde,
60000+50000 işleminden sonuç yanlış çıkar çünkü sonuc 65535 ten büyük çıkar.
Fakat
60000UL + 50000 şeklinde yazarsak bi sorun olmaz

armsistem

'yamak' büyüksün !!

Not: Diğer arkadaşlarada teşekkürler.

yamak


LukeSkywalker

Bu tür işlemleri daha iyi algılamak için "type casting" anahtarı ile arama yapabilirsiniz.