C++ size_t和双精度类型计算



我不熟悉C++,目前面临有关双精度类型size_t计算的问题。我提供了一部分源代码,如下所示。变量"storage"定义为双精度,"pos"定义为size_t类型。为什么它们可以一起计算?我查看了"pos"的值,它显示了 0、1、2 等值。此外,在双倍*结果=存储+pos的情况下,它显示108 + 2的结果x 117。

此外,有时 108 + 0 会得到结果 x 零。 什么条件导致结果?

在计算之前,我如何知道size_t的确切值?

任何意见和建议不胜感激。

    double* getPosValue(size_t pos, IdentifierType *idRule, unsigned int *errorNumber, bool *found)
{
    double * storage = *from other function with value 108*
    double* result = storage + pos;
    uint16_t* stat = status + pos;   }
变量

(或类型)的大小可以通过以下方式获得:

sizeof(variableNameOrTypeName)

如果你在给定数组元素的地址之后,例如 variableName[42] ,它很简单:

&(variableName[42])

没有明确的指针胡思乱想。

如果要在只有一个指针时操作实际的双精度,则需要取消引用指针。例如:

double xyzzy = 108.0;     // this is the VALUE.
double *pXyzzy = &xyzzy;  // this is a POINTER to it.
double plugh = *pXyzzy + 12.0;

上面的最后一行从指针(*pXyzzy)获取,并加十二,然后将其存储到另一个名为plugh的变量中。


您应该非常警惕以下情况:

double * storage = 108;

这将创建一个指向地址为 108 的双精度的指针。它绝不会创建值为 108 的实际双精度。取消引用该指针可能会导致,我们可以说,有趣的结果:-)

最新更新