Ho il seguente codiceC++ tipo si verifica nel Funzioni ignorato (il termine doppia, a condizione int)
#include <iostream>
using namespace std;
int dmult(int a, int b){
return 2*a*b;
}
int main(void)
{
double a = 3.3;
double b = 2;
int c = dmult(a,b);
cout << c << endl;
return 0;
}
Compila con MinGW senza problemi. Il risultato è (come pensavo) falso. È un problema del compilatore che non vi è alcun avviso, che una funzione che si aspetta numeri interi, ma alimentata con doppio, può compilare senza preavviso anche se il tipo di input è sbagliato? Significa che C++ ignora il tipo di input di una funzione? Non dovrebbe rendersi conto che gli argomenti della funzione hanno il tipo sbagliato?
Ci sono molte conversioni implicite. Un match di tipo esatto è il migliore. – chris
Ancora un altro motivo per compilare con '-Wall -Wextra -Wconversion'. – jww
@jww, francamente, sono rimasto un po 'sorpreso dal fatto che '-Wall -Wextra' non fa il lavoro e ha bisogno dell'ulteriore' -Wconversion' – vsoftco