我不熟悉使用不是双精度数或整数的数字。我知道传递 int 或 double 应该按值传递(考虑到内存/速度),但我不确定如何将 long long 数据类型传递给函数。
基本上,一个 long long 数字是否足够大,以至于通过 const 引用传递它比通过值传递它更快?
我不熟悉使用不是双精度数或整数的数字。我知道传递 int 或 double 应该按值传递(考虑到内存/速度),但我不确定如何将 long long 数据类型传递给函数。
基本上,一个 long long 数字是否足够大,以至于通过 const 引用传递它比通过值传递它更快?
考虑到 long long 数字需要 64 位并且差异很小,按值传递应该没问题。
通常,对于一个类或结构,通过 const 引用传递是一种有效或更好的方法,但是当类或结构的大小很小时,事情就变得棘手了,因为引用可能会引入额外的内存寻址和访问成本。
它是否更快取决于您的编译器和计算机体系结构。long long
在编译器上并不总是可用 - 尤其是 32 位编译器。一般来说,我会说您可能不会注意到速度差异,除非您经常调用该函数。
如果它的大小接近 double 或 float 也取决于您的编译器。但是任何计算错误的可能性在两者上都同样大long long
-double
只有错误的大小不同(如果有的话)。
对于您所描述的内容-我会说按价值传递。本质上,我建议仅在您需要修改值并且需要将该更改传播回调用函数时才通过引用传递 - 而无需返回值。