头文件定义
#pragma once
#include<iostream>
#include<vector>
int max(int a, int b);
float max(float a, float b);
std::string max(const std::string &a, const std::string &b);
int max(const std::vector<int> &v);
float max(const std::vector<float> &v);
std::string max(const std::vector<std::string> &v);
int max(const int *arr[]); // 数组只能声明为指针?
cc文件
#include "practice_2_5.h"
#include<string.h>
int max(int a, int b) {
return (a > b) ? a : b;
}
float max(float a, float b) {
return (a > b) ? a : b;
}
std::string max(const std::string &a, const std::string &b) {
std::cout << "a:" << a << "," << "b:" << b << std::endl;
bool bigger = a.compare(b);
return bigger ? a : b;
}
int main() {
std::cout << max(1,2) << std::endl;
std::cout << max(1.2f, 2.4f) << std::endl;
std::cout << max("abc", "abcd") << std::endl;
return 0;
}
请问为什么返回结果是 abc ?
string::compare 返回一个
int
, 会根据比较结果,返回一个负数(小于)、零(等于)或正数(大于)。然后这个结果在转换为
bool
的时候,只要不等于 0 就是true
。所以你需要的是: