Wurzel ziehen aus Integer



  • Hi.

    Ich arbeite gerade mit Stroustups - Einführung in die Programmierung mit c++.

    Dort bin ich gerade bei Operatoren, soll eine Zahl einlesen und einige Operationen ausführen.

    Codevorgabe im Buch ist folgene:

    #include <iostream>
    #include <string>
    #include <vector>
    #include <algorithm>
    #include <cmath>
    using namespace std;
    inline void keep_window_open(){char ch; cin >> ch;}
    
    int main()
    {
    	cout << "Geben Sie eine Gleitkommazahl ein: ";
    	double n;
    	cin >> n;
    
    	cout << "n == " << n
    		<< "\nn+1 == " << n + 1
    		<< "\ndreimal n == " << n * 3
    		<< "\nzweimal n == " << n + n
    		<< "\nn zum Quadrat == " << n*n
    		<< "\nHaelfte von n == " << n / 2
    		<< "\nWurzel von n == " << sqrt(n)
    		<< endl;
    
    	keep_window_open();
    	return 0;
    }
    

    Das funktioniert wunderbar.
    Nun steht aber darunter, dass ich statt einer double, eine int variable einlesen soll.
    soweit so gut.
    Weiter im Text steht, das die Funktion sqrt() nicht für int variablen definiert ist.

    und jetzt kommt das aber:

    Egal wie ich es mache, ob ich eine double definiere und int einlese, oder int definiere und int einlese, sqrt() funktioniert trotzdem und liefert richtige Ergebnisse.
    Das ist ja alles ganz toll, aber warum steht hier, das sqrt() nicht für int definiert ist?
    liegt das an meinem Compiler? ich habe an dieser stelle eine Fehlermeldung oder wenigstens ein falschen Ergebnis erwartet.

    ich nutze Visual Studio 3013 Express.

    Danke



  • http://www.cplusplus.com/reference/cmath/sqrt/

    Seit C++11 gibt es:

    double sqrt (T x); // additional overloads for integral types
    


  • Ahhh, jetzt seh ichs auch.
    War vorhin schon auf der Seite, habs aber anscheinend überlesen.

    Danke


Log in to reply