我有两个int类型的数组。每个元素大约有17901个元素长。一个表示高度,另一个表示空速。我想将这两个数组相除(这个除法将得到马赫数)。我该怎么做呢?
这是我现在使用的代码:
for (i = 0; i < ((size / 2) + 1); i++) { // size/2 here is 17901
machNumber[i] = (ASarray[i] / soundspeed[i]);
}发布于 2017-09-26 06:22:57
用计算出的大小sizeof(ASarray)/sizeof(*ASarray)替换((size/2)+1
这样,就不会有关于循环的疑问了。当然,ASarray的大小必须是静态定义的(内存不能是用malloc分配的)。
for(i = 0; i < sizeof(ASarray) / sizeof(*ASarray); i++) {
machNumber[i] = (ASarray[i] / soundspeed[i]);
}发布于 2017-09-26 06:27:08
将大小减半并不能正确计算元素的数量:您应该将数组的大小除以其元素的大小(两者均以字节为单位)。此外,如果machNumber是浮点类型,而ASarray和soundspeed都不是浮点类型,则需要进行强制转换来计算正确的马赫值:
for (size_t i = 0; i < sizeof(ASarray) / sizeof(ASarray[i]); i++) {
machNumber[i] = (double)ASarray[i] / soundspeed[i];
}https://stackoverflow.com/questions/46414918
复制相似问题