只要总和为正数,就可以获取数字数组(未知类型)并在每个单元格中创建另一个累积数字总和数组。 如何为任何类型的变量做这个函数? (int,double,long,short,float ..)任意类型的变量的数字排列
回答
为了简单起见,我展示了一个函数,只是增加了两个数字。我认为你将不会遇到写一个操作数组的函数的问题。
使用C++,你可以使用这样的模板(只是显示在这里证明应该实现什么):
#include <iostream>
using namespace std;
template<typename T> T sum(T a, T b)
{
return a + b;
}
int main(void)
{
long a = 5;
long b = 37;
long c = sum(a, b);
cout << c << endl;
}
这将在飞行创建一个真正的功能任何类型是所需的,所以这里将使用这个模板创建一个处理long
的函数。
您也可以达到类似使用通用选择在C“打电话安慰”,但这仍然要求您为任何类型的应处理,这样提供实际的功能:
#include <stdio.h>
static int sum__int(int a, int b)
{
return a + b;
}
static long sum__long(long a, long b)
{
return a + b;
}
static double sum__double(double a, double b)
{
return a + b;
}
#define sum(a, b) _Generic((a), \
int: sum__int, \
long: sum__long, \
double: sum__double \
)((a), (b))
int main(void)
{
long a = 5;
long b = 37;
long c = sum(a, b);
printf("%ld\n", c);
}
这只使用sum__long()
,其他功能在这个小例子中未使用。如果这让你感到困扰,这是C++更适合这项工作的例子之一。
你应该注意这个答案不显示通用功能(这是我如何理解你的问题,你想要什么)。在C中没有这样的概念。你为有为每个数据类型提供一个函数。即使在介绍性的C++示例中,每种数据类型都会有一个函数,但C++模板只是根据您的需要来管理创建这些函数。如果您需要真正的通用函数,则必须选择完全不同的语言(例如Java或C#)。
好吧,如果任何downvoter可以指出这个答案是错误的,我很乐意纠正它。现在我很确定它回答了OP的问题。 –
我对C(甚至C++)如何不支持泛型函数做了进一步的说明,所以这个答案应该完全清楚。再次,不要只是默默地投票,请在评论中表达你的疑虑,所以我知道你认为这个答案错过了。 –
- 1. 任意类型的数组
- 2. 一类变量的排列
- 3. 任意排列数组键
- 4. XML方案:使用任意数量的元素复杂类型任意次数
- 5. C++类中的任意数据类型
- 6. 更改工作区中任意位置的变量类型
- 7. 函数的参数任意数量给出错误类型
- 8. 在Python中使用任意数量的变量列表推导?
- 9. 列出任何类型的排序
- 10. 如何将任意数量的任意类型的数组存储在字典中
- 11. 使用javascript排列数组中的任意数字
- 12. 数字附加到变量的类型?
- 13. 在类泛型中使用任意数量的参数 - Java
- 14. ML模型预测排名(任意排序的列表)
- 15. 有任意数量的行的列表
- 16. 简单的命令可以将任意数量的任意类型的值合并为一个字符串
- 17. 任意类型的范围
- 18. 为任意一组密钥(任意数据类型)获取可排列对象的最有效方法
- 19. 枚举类型的任意整数值
- 20. 比较任意类型的整数
- 21. 返回任意类型的PostgreSQL函数
- 22. 指定任何类型的变量
- 23. 任意数量** kwargs的类继承?
- 24. SQL Server:加入任意数量的列
- 25. zipWith(++)任意数量的列表
- 26. 任意改变的字符
- 27. 如何获取任何类型集变量的元素数量?
- 28. 存储类型的类型来处理变量参数列表
- 29. 任意数量的字符串串,python
- 30. 从Haskell列表中抽样任意数量的数字
告诉我,你是否清楚自己的要求? –
没有[通用选择](http://en.cppreference.com/w/c/language/generic)这是不可能的。 –
这是不可能的。这是C.你可以在C11中使用'_Generic'来实现一些这样的宏。在任何情况下,对于每种类型的数组,都需要一个函数。 –