EDIT: La réponse de la question est que ==
est utilisé pour la comparaison, mon test if
utilisé =
SOLVED C++: Ne pas reconnaître la valeur char quand evaulating instruction if
Je recherchais pendant un certain temps, et demandé à mon professeur, mais ni de nous sommes sûrs exactement ce qui se passe. Cela signifie probablement qu'il est une faute de frappe quelque part, mais chaque fois que je lance ce code, pour une raison quelconque, il appelle toutes les fonctions indépendamment du fait que la déclaration if
évalue true
int main()
{
char StartUnit, EndUnit;
double StartVal = 0, EndVal = 0;
double CalcVal = 0;
static double result = 0;`
` //Receive user input`
` cout << "Please enter the unit which you would like to convert from: ";
cin >> StartUnit;
cout << "What is your initial value?: ";
cin >> StartVal;
cout << "Please enter the unit which you would like to convert to: ";
cin >> EndUnit;
`//Step 1: Convert input to celsius`
`if (StartUnit = 'f')
{
CalcVal = FarCel(StartVal);
}`
`if (StartUnit = 'k')
{
CalcVal = KelCel(StartVal);
}`
`if (StartUnit = 'r')
{
CalcVal = RakCel(StartVal);
}`
//Step 2: Conver celsius to desired value
cout << CalcVal;
return 0;
}
`
Quand je sortie CalcVal, peu importe quoi, il semble courir à travers les trois fonctions. Peu importe ce que je tape, r, c, f, ils évaulent tous la même chose. Pourrais-je avoir un conseil sur où je vais mal?
Les citations aléatoires épars étaient d'avant j'ai lu sur CTRL + K
Si votre professeur ne pouvait pas repérer immédiatement le bug évident, et une explication, comme vous l'avez prétendu, vous avez vraiment besoin de trouver un nouveau professeur. Celui que vous avez est complètement incompétent. –
Augmentez le niveau d'avertissement de votre compilateur et les chances sont bonnes, il criera meurtrier bleu sang sur vous pour le ==/= mélanger. Niveau 4 dans Visual Studio et en ajoutant -Wall -Wextra à la ligne de commande g ++ devrait faire le travail. – user4581301
cette question a une réponse, veuillez en choisir une en tant que réponse acceptable. – Lamar