如何计算C 中两个数字的差
How to calculate the difference of two numbers in c++?
如果我仅启用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;
您可能需要像以前的答案一样使用模板。
相关文章:
- C++通过数字比较两个数字
- 将向量之间的数字放在另一个向量之间<vector>>如果两个数字的差值为 1
- 在 txt 文件中显示前两个数字的程序
- 形成一个斐波那契三角形,使得每个数字是上面左对角线或右对角线上两个数字的总和
- 两个数字的对称配对功能
- 查找中间两个数字的正则表达式的匹配项
- 使用C++具有两个数字的最短路径算法.(C++)
- 将两个数字添加为链表
- C++ 分段错误:11 错误,同时编码将两个数字相加的链接列表
- 我应该如何使用remove_if删除两个数字范围内的元素
- 是否有任何内置函数可以检查给定的两个数字在给定整数数组中的顺序是否相同?
- 子数组中两个数字的相同出现(连续)
- 如何使用位操作在单个整数中编码和解码两个数字
- 在 c++ 程序中调试链表以添加两个数字: 有人可以解释为什么 l3=l3->next;导致错误?
- 钻头以两个数字替换位
- C 如何在小数系统中添加两个数字
- 为什么我的代码不给最后两个数字
- 如何在给出前两个数字的级数中找到大于 x 的第 n 个最小子数组总和?
- 输入两个数字后程序关闭
- 代码是否交换数组的两个数字