Perché non è il compilatore lamentarsi di questo codice:Assegna il doppio a std :: string - nessun errore di compilazione?
#include <string>
#include <iostream>
int main()
{
std::string a;
a = 2.3;
std::cout << "A:" << a << std::endl;
return 0;
}
GCC, MSVC non sembrano essere preoccupati per questo a tutti, anche se è chiaramente sbagliata e in realtà non funziona comunque!
L'output è:
A:
OUCH! Portare a un errore non rilevato nel mio programma.
Attivare gli avvisi? Clang emette quanto segue: 'warning: la conversione implicita da 'double' a 'char' cambia valore da 2.Da 3 a 2 [-Wliteral-conversion] ' – Rapptz
Sta facendo ciò che gli hai detto. Cambia il doppio valore in 65.3 e uscirà con 'A: A' (65 è il valore ASCII della lettera' A'). – Blastfurnace
Nel mio GCC (4.82) anche '-Wall -Wextra' non attiva questo avviso su' -Wconversion' necessario. – Galik