【发布时间】:2021-02-05 19:42:36
【问题描述】:
我正在再次阅读“C++ Primer,第 5 版”。在第16章关于模板,有一个“模板非类型参数”的例子:
template<unsigned N, unsigned M>
int compare(const char (&p1)[N], const char (&p2)[M])
{
return strcmp(p1, p2);
}
int main()
{
cout << compare("hi", "mom") << endl;
cout << strcmp("hi", "mom") << endl;
std::cout << "\ndone!\n";
}
-
众所周知,
strcmp()比较两个字符串并返回0相等,如果str1大于str2则返回正值,如果str1小于str2则返回负值,这就是我在main()调用strcmp()时得到的。 -
问题出在在模板函数中调用
strcmp()的书中示例中,所以当我运行程序时,我得到:
输出:
-5
-1
代码有什么问题?为什么两者对相同的参数给出不同的值?
【问题讨论】:
标签: c++ templates strcmp non-type