Diskuze: výpis proměnné v C++
V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.
Člen
Zobrazeno 6 zpráv z 6.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.
Ahoj, problém je v tom, že máš proměnnou "hod" typu int. Výsledek ti to tím pádem házelo celočíselný Změň jej na desetinný typ
Tak po 1. skus zabudnut na globalne prremenne a po 2. malo by stacit ked namiesto 360 pouzies 360.0
#include <iostream>
const int hod = 24;
double dil = (double)360 / (hod * 60);
int main(){
std::cout << dil;
return 0;
}
Doplním kolegy, kteří již sdělili správné řešení..
Děje se to kvůli implicitním konverzím. Typ výsledku operací je dán operandy - tj. když například sčítáš int a double, tak ti vyjde double (double má vyšší prioritu), když double a double, tak double a když int a int, tak int.
Ty dělíš int intem a tak vlastně děláš celočíselné dělení (desetinná část se zahazuje). Proč to tak je? Někdy to tak můžeš chtít
Řešení je jednoduché - buď jeden z operandů přetypovat na double:
(double) 360
Nebo ještě jednodušeji přepsat ten int literál na double literál (to samozřejmě může fungovat jen když pracuješ s literály):
360.0
Zobrazeno 6 zpráv z 6.