Je veux prendre en compte le code. D'abord, il est:Différence entre sqrt et sqrtf
#include <iostream>
#include <cmath>
#include <math.h>
using namespace std;
int main() {
int s = 25;
cout << sqrt(s) << endl;
return 0;
}
Il m'a donné cette erreur:
>c:\users\datuashvili\documents\visual studio 2010\projects\training\training\training.cpp(9): error C2668: 'sqrt' : ambiguous call to overloaded function
1> c:\program files\microsoft visual studio 10.0\vc\include\math.h(589): could be 'long double sqrt(long double)'
1> c:\program files\microsoft visual studio 10.0\vc\include\math.h(541): or 'float sqrt(float)'
1> c:\program files\microsoft visual studio 10.0\vc\include\math.h(127): or 'double sqrt(double)'
1> while trying to match the argument list '(int)'
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
Si j'ajoute type flottant entre parenthèses devant s, comme ceci:
#include <iostream>
#include <cmath>
#include <math.h>
using namespace std;
int main() {
int s = 25;
cout << sqrt((float)s) << endl;
return 0;
}
je suis arrivé que je devinerait, 5
. Et une autre variante est qu'au lieu de sqrt
, si j'écris sqrtf
:
#include <iostream>
#include <cmath>
#include <math.h>
using namespace std;
int main(){
int s=25;
cout << sqrtf((float)s) << endl;
return 0;
}
J'ai aussi 5
.
Quelle est la différence entre eux? Cela signifie-t-il que sqrtf est identique à sqrt pour le type float?
Mais vous n'obtiendrez pas une erreur que vous compilez en g ++ (compilateur GNU) – vivek