++ resultLen * sizeof(float))是什么;意思是什么?

时间:2015-05-06 11:04:17

标签: c sizeof

您能解释++resultLen * sizeof(float)的含义吗?

if (mas[i] > mas[i + 1]) 
{
    result = (float*)realloc(result, ++resultLen * sizeof(float));
    result[resultLen - 1] = mas[i];
}

4 个答案:

答案 0 :(得分:1)

运算符 sizeof 返回您正在执行代码的系统上传入的参数类型的大小。通常浮点数为4个字节。

操作员++将增加您的变量。如果它放在变量后面,变量将在它参与的算术运算之后递增。它放在变量之前,因此它在乘法之前递增。

所以在这里你要为你的“结果”数组重新分配内存空间,将其大小增加1(浮动)。

答案 1 :(得分:0)

这意味着:将resultLen的值增加1,然后将resultLen的新值乘以浮点数所使用的字节数。

答案 2 :(得分:0)

下面

result = (float*)realloc(result, ++resultLen * sizeof(float));

result正在realloc编辑。

++resultLen * sizeof(float)

相同
(++resultLen) * sizeof(float)

因为operator precedence++的优先级高于*)。首先递增resultLen,然后将此值乘以sizeof(float)

<小时/> 旁注:在C中,don't cast the result of malloc/calloc/realloc

答案 3 :(得分:0)

++ resultLen等同于(resultLen + 1)

所以等式变成了 (resultLen + 1)*的sizeof(浮点);

sizeof(float)通常为4,但依赖于操作系统和体系结构,假设为4。 这使: 4 * resultLen + 4。

HTH