C++编程菜鸟问题

#include<iostream>
using namespace std;
float main()
{
cout<<"该程序用于计算已知半径的球的表面积和体积"<<endl;
cout<<"请输入球的半径"<<endl;
const float pai=3.1415926;
const float a=0.75;
float R;
cin>>"球的半径=">>R>>endl;
float V;
V=a*pai*R*R*R;
float S;
S=4*pai*R*R;
cout<<"球的体积="<<V<<endl;
cout<<"球的表面积="<<S<<endl;
return 0;
}
编译时提示这个error C2679: binary '>>' : no operator defined which takes a right-hand operand of type '' (or there is no acceptable conversion)
和warning C4305: 'initializing' : truncation from 'const double' to 'const float'。。。分别是啥意思。。。

一、warning C4305: 'initializing' : truncation from 'const double' to 'const float'

const float pai=3.1415926; 浮点型常数默认为double类型,而你定义的pai是float类型,会进行隐式转换,丢失精度,建议改为:const double pai=3.1415926;

二、error C2679: binary '>>' : no operator defined which takes a right-hand operand of type '' (or there is no acceptable conversion)

cin>>"球的半径=">>R>>endl; cin表示输入数据,而这里不能存有常量信息"球的半径=",修改如下:
cout <<"球的半径=";
cin >>R;
cout <<endl ;追问

float 和double区别不是只在于范围么?隐式转换什么的是啥意思= =。。再通俗点解释下呗。。

追答

你的老师应该给你讲过,float和double类型的区别:
float存储数据占四个字节,有效数据6-7位
double存储数据占八个字节,有效数据15-16位
即:double表示的数据精确度比float高。

众所周知,计算机中存储的数据都是以二进制存储的。小数在存储在计算机中时,转换成二进制时,不一定能精确转换,如:0.3转换成二进制为:0.0100110011....是个循环二进制数。存储到double中的循环数据要多于float中,因此,double精度高。

而计算机中不同类型的数据在进行运算赋值时,因变量的不同,系统会自动截短数据,你想,把一个大象放到冰箱里,装不下怎么办?只好处理一下,能放多少放多少啊,这就是隐式转换。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-07-07
cin>>"球的半径=">>R>>endl;

cin>>这里应该放变量

而不是字符串

这样写
cout<<"请输入球的班级 = "<<endl;
cin>>R;
第2个回答  2013-07-07
cout<<"球的半径="<<endl;
cin>>R;
第3个回答  2013-07-07
cin>>"球的半径=">>R>>endl;

第一个错误是这个,改成cin>>"球的半径=">>R,
第二个是警告,const float pai=3.1415926;说double型就赋值给float型
相似回答