Arama butonu
Bu konudaki kullanıcılar: 1 misafir, 1 mobil kullanıcı
4
Cevap
325
Tıklama
0
Öne Çıkarma
C de işlem sırası ile ilgili
A
4 yıl
Er
Konu Sahibi

Merhalar, birisi bana bunun sonucunun nasıl hesaplanacağını anlatabilir mi?

%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 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.

Üye Ol Şimdi Değil



C
4 yıl
Yüzbaşı

%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;

11/2=5
7/2.0=3.5
5/2=2
2*3=6

topla hepsini (40 yapar :D);

5+3.5+6 = 14.5



A
4 yıl
Er
Konu Sahibi

Çok teşekkür ederim cevap için. Özelden de bir sor sordum. Cevaplarsanız memnun olurum.



C
4 yıl
Yüzbaşı

@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.




Bu mesajda bahsedilenler: @arrap
A
4 yıl
Er
Konu Sahibi

Tekrardan teşekkür ederim. Arada yazacağım bi kaç gün rahatsız ederim :)



< Bu ileti iOS uygulamasından atıldı >

DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.