gpt4 book ai didi

c++ - 为什么最大两个字符串文字的输出是错误的?

转载 作者:行者123 更新时间:2023-12-03 06:52:40 25 4
gpt4 key购买 nike

有人可以解释一下,为什么这段代码中的输出是“C”?

#include <iostream>
using namespace std;
template<class X>
X maximum(X a,X b)
{
if(a > b)
return a;
else
return b;
}

int main() {
cout << maximum("C","D") << endl;
}

最佳答案

请注意,在您的情况下,类型是 X将被推断为 const char* ,因此您正在比较两个 const char * s 即两个字符串文字的地址。
如果您想获得预期的结果,请使用以下内容

cout << maximum("C"s, "D"s) << endl;
传递 std::strings而不是传递字符串文字的地址。
string literal operator
Demo
或者使用字符而不是字符串文字,即 'C''D'在这种情况下, X将被推断为 char .
并见 Why is "using namespace std;" considered bad practice?

关于c++ - 为什么最大两个字符串文字的输出是错误的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64400186/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com