Dělení - vysvětlení – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Dělení - vysvětlení – C / C++ – Fórum – Programujte.comDělení - vysvětlení – C / C++ – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
Alexí
~ Anonymní uživatel
1 příspěvek
14. 1. 2014   #1
-
0
-

Zdravím, může mi někdo logicky vysvětlit proč když dělím:

double x;

x = 133 / 2;

se hodnota proměné x = 66 a ne 66,5 když je to double? Logicky by to mělo tak prece vyjít ne? Bohužel nevychází :/

Díky

Nahlásit jako SPAM
IP: 78.102.188.–
Reklama
Reklama
hlucheucho+10
Posthunter
14. 1. 2014   #2
-
0
-

operandy jsou int a výsledek je int, teprve ten se přetypuje na double. Jiná situace by nastala v případě, že by jeden z opereandů byl double

x = (double)133 /2;

pak se i druhý operand přetypuje na double a výsledek bude double.

hu

Nahlásit jako SPAM
IP: 195.178.67.–
phoer
~ Anonymní uživatel
3 příspěvky
15. 1. 2014   #3
-
0
-

Sice se teprve taktez ucim, ale zkus 

double x = 133 / 2.0;

Nahlásit jako SPAM
IP: 176.222.224.–
Kenvelo+1
Super člen
16. 1. 2014   #4
-
0
-

#1 Alexí
jak napsal hlucheucho můžeš ho přetipovat 

double x;

x = (double)133/2;

// nebo můžeš napsat 

double x, y = 2;
x = 133/2;

// třetí možnost 

double x;
x = 133/2.0;

Nahlásit jako SPAM
IP: 89.177.211.–
Díky bohu, že počítače vymysleli muži. Kdyby to byly ženy, tak binární soustavu reprezentují jedničky, nuly a "možná"
voty+1
Návštěvník
20. 1. 2014   #5
-
0
-

#4 Kenvelo

Jen pro upřesnění. Při výpočtu aritmetického výrazu Jazyk C postuje tak, ze nejprve vyhodnotí výraz a teprve poté řeší, jak se provede samotné přiřazení výsledku do požadované proměnné.

Vyhodocení výrazu se provádí nad takovým datovým typem, který je "nejvyšší společný" pro operandy daného operátoru (zde dělení). Takže v příkladu double x = 133 / 2; se nejprve vezmou operandy dělení, což jsou int. Provede se operace dělení nad int, a výsledek je opět zcela logicky int. Tedy 133/2 = 6. Teprve poté se začne řešit, jak int uložit do x, které je double. Hodnota v x bude tedy 66 převedených do double.

Pokud chceš, aby se již dělení provedlo v double, musí být alespoň jeden z operandů typu double. To jsou ty příklady, co sem lidé dávali.

Akorát si myslím, že ten druhý příklad od @Kenvelo měl být

// nebo můžeš napsat 

double x, y = 2;
x = 133/y;
Nahlásit jako SPAM
IP: 109.239.71.–
Jednu rozbil a tu druhou ztratil.
Kenvelo+1
Super člen
20. 1. 2014   #6
-
0
-

#5 voty
Sem teď nepochopil ? Vysvětlení nemělo být asi pro mě ... =]

Nahlásit jako SPAM
IP: 89.177.211.–
Díky bohu, že počítače vymysleli muži. Kdyby to byly ženy, tak binární soustavu reprezentují jedničky, nuly a "možná"
Kenvelo+1
Super člen
20. 1. 2014   #7
-
0
-

#5 voty

a proč by nemohl být první a poslední příklad ? v první to přetypuješ s int na double a u posledního je hodna 2.0 vyhodnocena jako double kterou dělíš a ukládáš do proměnné double.. 

všechny 3 varianty se dají použít. Osobně bych volil druhou a nikde není napsáno, že hodnotu nesmíš přetypovat nebo že kompilator si nesmí  určit typ sám ... 

Nahlásit jako SPAM
IP: 89.177.211.–
Díky bohu, že počítače vymysleli muži. Kdyby to byly ženy, tak binární soustavu reprezentují jedničky, nuly a "možná"
voty+1
Návštěvník
21. 1. 2014   #8
-
0
-

#7 Kenvelo
Sorry, blbě jsem se vyjádřil. Použít jdou všechny, pouze v tom druhém je IMHO překlep, který jsem chtěl uvést na pravou míru a tím se mi to celé zamotalo ... Dělíš tam "2" a né "y".

Prostě má první odpověď byla  pro @Alexi, s tím, že jsem chtěl opravit překlep v tvém příkladu ... Snad to pochopíte :)

Nahlásit jako SPAM
IP: 109.239.71.–
Jednu rozbil a tu druhou ztratil.
Kenvelo+1
Super člen
21. 1. 2014   #9
-
0
-

#8 voty
  

Nahlásit jako SPAM
IP: 89.177.211.–
Díky bohu, že počítače vymysleli muži. Kdyby to byly ženy, tak binární soustavu reprezentují jedničky, nuly a "možná"
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 137 hostů

Podobná vlákna

[C++] Delení % — založil Re4DeR

Dělení s ocáskem — založil Dan

Dělení matice — založil Hanule

Dělení nulou — založil Anonymní uživatel

C chyba v dělení — založil kotis

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý