C++的这个程序有问题

来源:百度知道 编辑:UC知道 时间:2024/05/17 06:35:00
#include <iostream>
using namespace std;
template <class numtype>
class Compare
{
public:
Compare(numtype a,numtype b)
{
x=a;
y=b;
}
numtype max()
{return(x>y)? x:y;}
numtype min()
{return(x<y)? x:y;}
private:
numtype x,y;
};
int main()
{
Compare <int> cm1(3,7);
cout<<cm1.max()<<endl;
cout<<cm1.min()<<endl;
Compare <float> cm2(45.78,93.6);//这一行有问题
cout<<cm2.max()<<endl;
cout<<cm2.min()<<endl;
Compare <char> cm3('a','A');
cout<<cm3.max()<<endl;
cout<<cm3.min()<<endl;
return 0;
}
把类型改成double就没有警告,float就会有,这是怎么一回事.
另外,请帮忙叙述一下C++中所有类型,除自定义类型.

很明显啊,FLOAT是单精度,你赋的值已经超出了FLOAT的范围,而DOUBLE是双精度,范围比FLOAT大.
INT 整形
CHAR 字符形
SHORT 短整形
还有上面两个
其它还的无符号的INT,CHAR,SHORT
还有长双精度形

路过~看到了乱码,真可怕