我想看看直接使用像<,>等运算符比较字符串会发生什么情况。下面的代码中的两种用法令人惊讶地给出了不同的答案。他们是不是完全一样的说话方式?使用通用比较器进行字符串比较
#include <iostream>
template <class T>
T max(T a, T b)
{
//Usage 1:
if (a > b) return a; else return b;
//Usage 2:
return a > b ? a : b ;
}
int main()
{
std::cout << "max(\"Alladin\", \"Jasmine\") = " << max("Alladin", "Jasmine") << std::endl ;
}
用法1给出“茉莉花”,而用法2给出“阿拉丁”。
使用g ++,两种情况都给我“Alladin”。 – pushkin
你是如何编译它的? – pushkin
它看起来像一个编译器问题。我正在使用http://cpp.sh/进行编译。当我使用g ++时,它在两种情况下都会给出“Alladin”。 –