%lf long float gibi görünsede aslında double veri tipini yazdırmak için kullanılıyor.
işleme gelince, önce şu şekilde ayıralım:
çarpma ve bölmenin toplama ve çıkarmaya göre işlem önceliği vardır;
(11/2) + (7/2.0) + (5/2*3)
çarpma ve bölme arasında öncelik yoktur, soldan sağa işlenir. yani;
(11/2) + (7/2.0) + ((5/2)*3)
buradaki trick, bölme işlemlerinde sadece ortadaki işlemdeki 2.0 sayısının özellikle float olduğu belirtilmiş. dolayısıyla diğerleri integer olarak işlenir. yani;
@arrap telefon doğrulamam olmadığı için ÖM kullanamıyorum. int float konusunu soruyorsan;
c de "implicit int" kuralından dolayı, açıkça bir veri tipi olmayan herşey "int" olarak kabul edilir. mesela dönüş tipi olmayan bir fonksiyon tanımlarsan;
topla(int a, int a) { }
bu fonksiyonun dönüş tipi default olarak "int" tir. soruda 2.0 dışında diğer veriler için herhangi bir explicit tanım olmadığından hepsi int olarak kabul edilir. şimdi senin soruna gelirsek, integer veri tipinde virgülden sonrası olmadığı için, iki integer veri tipinin sonucu integer olmasa bile "implicit conversion" dan dolayı noktadan sonrası gözardı edilir ve integere çevrilir. yani;
11/2=5.5 ama integer veri tipi noktadan sonrasını saklayamayacağı için 5.5 un noktadan sonrası atılır ve sonuç integer olarak 5 olur. 5/2 de aynı şekilde 2.5 değil 2 olur.
%lf ne demektir? bu işlemin sonucu nasıl 14.5 oluyor bir türlü bulamadım.
printf("%lf",11/2+7/2.0+5/2*3);
DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.
Üye Ol Şimdi DeğilÜye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.