读书人

一路例题为什么运行结果不对

发布时间: 2013-10-04 21:41:43 作者: rapoo

一道例题,为什么运行结果不对?

#include<iostream>
using namespace std;
template<class T>
T max(T m1,T m2)
{return (m1>m2)?m1:m2;}
void main( ) {
cout<<max(2,5)<< "\t"<<max(2.0,5.0)<<endl;
cout<<max("y","b")<<"\t"<<max("c","d")<<endl;
}

运行结果是:
5 5
b d
y比d大,为什么不是这个结果:
5 5
y d
刚问过这倒例题,因为m1和ml写混了,所以没通过编译。但是现在为什么运行结果又不对了?请高手运行一下帮助找错。谢谢了!
[解决办法]
'y' 不是“y"
[解决办法]
引用:
Quote: 引用:

"Y“是字符串,‘y'是字符
字符串不能比较大小的

可是例题里max("ABC","ABD")比较的结果是ABD!可以比较啊?!
max("y","b")是比较字符串,实际应该是两个字节:max("y\0","b\0"),比较字符串的结果也应该是y("y\0")啊?

你去把"ABC"和"ABD"换一下位置,结果是"ABC",它比较的是字符串,是地址,不是内容

读书人网 >C++

热点推荐