Negativ machen
-
Hey,
wie kann ich ein Wert negativ machen?Bsp:
Ich lese a ein, ist aber zufällig positiv, wills aber dann negativ machen
aus 3 soll also -3 werden.
-
negatiiiv schrieb:
Hey,
wie kann ich ein Wert negativ machen?Bsp:
Ich lese a ein, ist aber zufällig positiv, wills aber dann negativ machen
aus 3 soll also -3 werden.Wie wärs mit
if(a>0) a=-a;so ists besser
-
Hmmm, eine Multiplikation ist aber teuer! Wieso nicht:
if(a > 0) { a = -a; }Oder noch besser:
template<typename ValueT> void set_negative(ValueT& value) { value = -value; }Oder anders:
template<typename ValueT, typename ResultT = ValueT> ResultT get_negative(ValueT const& value) { return -value; }Und natürlich die Verwendung:
if(a > 0) { a = get_negative(a); // oder set_negative(a); }...
...Grüssli
-
wobei "typename ResultT = ValueT" so nich tzulaessig ist
beitemplate<typename ValueT, typename ResultT = ValueT> ResultT get_negative(ValueT const& value) { return -value; }
-
muffmolch schrieb:
wobei "typename ResultT = ValueT" so nich tzulaessig ist
beitemplate<typename ValueT, typename ResultT = ValueT> ResultT get_negative(ValueT const& value) { return -value; }Warum nicht?
ResultTist hier ein Standard-Templateargument, analog zu Standardparametern bei Funktionen.
-
der cl spuckt hier folgende fehlermeldung aus:
"error C4519: default template arguments are only allowed on a class template"
-
Stimmt, da hast du Recht.
Ich dachte, weil sowas geht:
std::make_pair<int>(3, 4);wäre es auch erlaubt. Aber hier wird der zweite Templatetyp implizit aus dem zweiten Funktionsargument hergeleitet.
-
Nexus schrieb:
Stimmt, da hast du Recht.
Ich dachte, weil sowas geht:
std::make_pair<int>(3, 4);wäre es auch erlaubt. Aber hier wird der zweite Templatetyp implizit aus dem zweiten Funktionsargument hergeleitet.
naja, da wird der zweite parameter deduziert
-
muffmolch schrieb:
naja, da wird der zweite parameter deduziert
Sagte ich ja.

-
hab's leider erst beim zweiten hinsehen gelsen.. sorry dafür