Float,Double,Char,C ++错误。怎么了?

时间:2010-10-31 19:42:44

标签: c++ compiler-construction floating-point

我正在学习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]'到'浮动'           没有可以进行此转换的上下文

并且

  

错误C2440:'=':无法转换   'const char [5]'到'double'           没有可以进行此转换的上下文

你们能指出我正确的方向吗? 我刚刚了解了const(20分钟前可能),我不明白为什么以前的程序无法正常工作。

5 个答案:

答案 0 :(得分:10)

不要在浮点值周围加上引号。

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

应该是

h = 8.5;
j = 8.56;

当您为整数类型输入文字值时,例如intshort等,以及floatdouble等浮点类型,使用报价单。

例如:

int x = 10;
float y = 3.1415926;

在键入字符串文字时,只能使用双引号,在C ++中,这是一个以空值终止的const char[]数组。

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

最后,当您为单个字符(类型为char)键入文字字母或符号值时,您可以使用单引号。

char c = 'A';

答案 1 :(得分:4)

分配给float或double时,不能将值包装在引号中。

这些行:

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

应该是:

h = 8.5;
j = 8.56;

答案 2 :(得分:2)

您不需要在“引号”中包装浮点数。引号中的任何内容都是一个字符串(const char *)。

答案 3 :(得分:1)

doublefloat值不应引用。

答案 4 :(得分:1)

删除分配中的引号为h和j。