我有一个由 double 组成的数组,我需要将其向下舍入并转换为整数,以便我可以将它们用作输出数组中的索引。我刚刚开始 C
编程,但不确定它是如何工作的。到目前为止,我能想到的最好的是:
int create_hist( double input_array[], int count, int output_array[17] ) {
for ( int i = 0; i < count; i++ ) {
input_array[i] = int floor(input_array[i]);
output_array[input_array[i]]++;
但是我遇到以下错误,我无法破译:
array.c:11:20: error: expected expression before ‘int’
input_array[i] = int floor(input_array[i]);
^
array.c:12:7: error: array subscript is not an integer
hist[input_array[i]]++;
^
array.c:14:1: error: control reaches end of non-void function [-Werror=return-type]
}
^
如果有人能告诉我我哪里做错了,将不胜感激。
最佳答案
除非您真的想修改 input_array
,否则最好将四舍五入的 double 值保存在一个中间变量中,然后访问您的整数数组。无需使用 floor()
将 double
转换为 int
即可。
int create_hist(double input_array[], int count, int output_array[17]) {
for (int i = 0; i < count; i++) {
int index = (int)input_array[i];
if ((index > 16) || (index < 0)) {
return -1;
}
output_array[index]++;
}
return 0;
}
当然,您也应该真正将 output_array
的大小作为变量传递,而不是对其进行硬编码。
关于c - 如何在 C 中将 double 组转换为整数数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49594596/