只要總和爲正數,就可以獲取數字數組(未知類型)並在每個單元格中創建另一個累積數字總和數組。 如何爲任何類型的變量做這個函數? (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'來實現一些這樣的宏。在任何情況下,對於每種類型的數組,都需要一個函數。 –