2010-10-31 24 views
1

J'apprends le C++, mais j'ai rencontré une erreur que je ne comprends pas.Float, Double, Char, Erreurs C++. Qu'est-ce qui ne va pas?

Voici mon code source, les commentaires inclus

#include "stdafx.h" 
#include <iostream> 

using namespace std; 

int main() 
{ 
float h; //a float stands for floating point variable and can hold a number that is a fraction. I.E. 8.5 
double j; //a double can hold larger fractional numbers. I.E. 8.24525234 
char f; // char stands for character and can hold only one character (converts to ASCII, behind scenes). 
f = '$'; //char can hold any common symbol, numbers, uppercase, lowerver, and special characters. 
h = "8.5"; 
j = "8.56"; 

cout << "J: " << j << endl; 
cout << "H: " << h <<endl; 
cout << "F: " << f << endl; 

cin.get(); 
return 0; 
} 

Je reçois les erreurs suivantes lors de la compilation (référence personnelle que je suis d'apprentissage.):

erreur C2440: '=': ne peut pas convertir 'const char [4]' 'flotter' Il n'y a pas de contexte dans lequel cette conversion est possible

Et

erreur C2440: '=': ne peut pas convertir 'const char [5]' à 'double' Il n'y a pas de contexte dans lequel cette conversion est possible

Can vous les gars me pointer dans la bonne direction? Je viens d'apprendre à propos de const (il y a 20 minutes peut-être) et je ne comprends pas pourquoi ce programme précédent ne fonctionne pas correctement.

+0

Le texte entre guillemets est un * littéral chaîne *, ce qui n'est pas la même chose qu'une valeur numérique. – GManNickG

+0

Cette question est une question de langue si simple tout tutoriel intro couvrirait. Ne pensez pas qu'il appartient ici. – ideasman42

Répondre

10

Ne placez pas de guillemets autour de vos valeurs à virgule flottante.

h = "8.5"; 
j = "8.56"; 

devrait être

h = 8.5; 
j = 8.56; 

Lorsque vous tapez des valeurs littérales pour les types entiers, comme int, short, etc., ainsi que les types à virgule flottante comme float ou double, ne pas utiliser des citations .

Par exemple:

int x = 10; 
float y = 3.1415926; 

Vous utilisez uniquement doubles citations lorsque vous tapez une chaîne littérale qui en C++ est un tableau const char[] zéro terminal.

const char* s1 = "Hello"; 
std::string s2 = "Goodbye"; 

Enfin, lorsque vous tapez une valeur alphabétique ou symbolique littérale pour un seul caractère (de type char), vous pouvez utiliser des citations simples.

char c = 'A'; 
1

double et float valeurs ne doivent pas être cités.

4

Lors d'une affectation à un flottant ou à un double, vous ne pouvez pas envelopper les valeurs entre guillemets.

Ces lignes:

h = "8.5"; 
j = "8.56"; 

devrait être:

h = 8.5; 
j = 8.56; 
2

Vous n'avez pas besoin d'envelopper les nombres à virgule flottante dans "guillemets". Tout ce qui est entre guillemets est une chaîne (un const char *).

+1

Les chaînes sont des tableaux const char et non des pointeurs. – GManNickG

1

Supprimez les guillemets dans les affectations à h et j.