Ошибки типа Float, Double, Char, C ++.Что случилось? - PullRequest
1 голос
/ 31 октября 2010

Я изучаю C ++, но столкнулся с ошибкой, которую не понимаю.

Вот мой исходный код, включая комментарии (личная ссылка, как я учусь.)

#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;
}

Я получаю следующие ошибки при компиляции:

ошибка C2440: '=': невозможно преобразовать из const char [4] to float Нет контекста, в котором это преобразование возможно

И

ошибка C2440: '=': невозможно преобразовать из 'const char [5]' до 'double' Нет контекста, в котором это преобразование возможно

Не могли бы вы, ребята, указать мне правильное направление? Я только что узнал о const (возможно, 20 минут назад) и не понимаю, почему эта предыдущая программа не работает должным образом.

Ответы [ 5 ]

10 голосов
/ 31 октября 2010

Не ставьте кавычки вокруг значений с плавающей запятой.

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

должно быть

h = 8.5;
j = 8.56;

Когда вы вводите литеральные значения для целочисленных типов, например int, short и т. Д., А также типы с плавающей запятой, такие как float или double, вы не используете кавычки.

Например:

int x = 10;
float y = 3.1415926;

Двойные кавычки используются только при вводе литерала string , который в C ++ представляет собой массив const char[] с нулевым символом в конце,

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

Наконец, когда вы набираете буквальное буквенное или символическое значение для одного символа (типа char), вы можете использовать одинарные кавычки.

char c = 'A';
4 голосов
/ 31 октября 2010

При присвоении числа с плавающей запятой или двойного значения нельзя заключать в кавычки.

Эти строки:

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

Должно быть:

h = 8.5;
j = 8.56;
2 голосов
/ 31 октября 2010

Вам не нужно заключать числа с плавающей точкой в ​​"кавычки".Все в кавычках является строкой (const char *).

1 голос
/ 31 октября 2010

Удалить кавычки в присвоениях h a j.

1 голос
/ 31 октября 2010

double и float значения не должны заключаться в кавычки.

...