我不熟悉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 的实际双精度。取消引用该指针可能会导致,我们可以说,有趣的结果:-)