一个编译时多态的例子:为什么调用的是double的那个函数,该如何解决
一个编译时多态的例子:为什么调用的是double的那个函数
如题:
#include <iostream.h>
char max ( char x, char y ) { return x> y?x:y; }
int max ( int x, int y ) { return x> y?x:y; }
float max ( float x, float y ) {return x> y?x:y; }
double max (double x, double y ) {return x> y?x:y; }
void main()
{
cout < <max( 'd ', 's ') < <endl;
cout < <max(28,168) < <endl;
cout < <max(3.14,2.718) < <endl;
}
语句cout < <max(3.14,2.718) < <endl;为什么调用的是double max (double x, double y )函数?
------解决方案--------------------
3.14,2.718浮点常量默认是double的
------解决方案--------------------
up LS
------解决方案--------------------
要想调用float版的可以这样写:
max((float)3.14,(float)2.718)
或者是
max(3.14f,2.718f)
如题:
#include <iostream.h>
char max ( char x, char y ) { return x> y?x:y; }
int max ( int x, int y ) { return x> y?x:y; }
float max ( float x, float y ) {return x> y?x:y; }
double max (double x, double y ) {return x> y?x:y; }
void main()
{
cout < <max( 'd ', 's ') < <endl;
cout < <max(28,168) < <endl;
cout < <max(3.14,2.718) < <endl;
}
语句cout < <max(3.14,2.718) < <endl;为什么调用的是double max (double x, double y )函数?
------解决方案--------------------
3.14,2.718浮点常量默认是double的
------解决方案--------------------
up LS
------解决方案--------------------
要想调用float版的可以这样写:
max((float)3.14,(float)2.718)
或者是
max(3.14f,2.718f)