如何计算C 中两个数字的差

How to calculate the difference of two numbers in c++?

本文关键字:两个 数字 何计算 计算      更新时间:2023-10-16

如果我仅启用double和整数,则是4个函数。但是我想启用所有数据类型(int long float double unsigned数字等)如何可能?

#include <iostream>
using namespace std;
double diff(int num1, int num2) {
    return double(num1-num2);
}
double diff(int num1, double num2) {
    return double(num1)-num2;
}
double diff(double num1, int num2) {
    return num1-double(num2);
}
double diff(double num1, double num2) {
    return num1-num2;
}
int main() {
    int a = 10;
    double b = 4.4;
    cout << diff(a, b) << endl;
    return 0;
}
template <typename T, typename U>
double diff(T a, U b) {
    return a - b;
}

您不需要double的演员表 - 如果任何一个参数都是double,则在return期间都为您完成。但是,

double diff(double a, double b);

也可以使用int参数来调用。

使用模板函数:

template <typename T1, typename T2>
double diff(const T1& lhs, const T2& rhs)
{
  return lhs - rhs;
}

您不必"启用"操作,只需写:

cout << (a - b) << endl;

与我添加的所有以前的答案不同,我会添加有关C 11。在C 11中,您可以使用decltype

#include <iostream>
template <typename T1, typename T2>
auto diff(T1 a, T2 b) -> decltype(a)
{
   return (a - b);
}
int main() {
   std::cout << diff(3.5, 1) << std::endl;
   std::cout << diff(3, 1.5) << std::endl;
}

diff函数将始终返回类型的值,例如第一个参数。请注意,在第一种情况下,它是浮点数,但第二个是整数。

您可以为同一模板定义

template <typename T, typename U>
T diff(const T& a, const U& b) {
    return a - b;
}

此代码做出了很多假设,例如操作员 - 定义为t,返回类型将始终为t type t type type ...

您始终可以使用绝对值来计算差异,例如

cout << abs(a - b) << endl;

您可能需要像以前的答案一样使用模板。