*&Var - 1.0f 是什么意思?

What does *&Var - 1.0f means?

在学习一些教程时,我遇到了一个奇怪的 C++ 表达式:

uint64_t var = ....
return (*&var) - 1.f;

这是什么意思?它是对指针的引用吗?从引用中减去 1 有什么意义?应该是LCG算法的实现。

var 是一个标识符。它命名一个变量。

一元运算符&是addressof运算符。 addressof 运算符的结果是指向由其操作数命名的对象的指针。 &var 是指向变量 var.

的指针

一元*运算符是间接运算符。给定一个指针操作数,它间接通过该指针,结果是指向对象的左值。它是 addressof 运算符的反函数。

当您获取一个对象的地址,然后通过该指针间接访问时,结果值就是您获取其地址的对象。本质上,在这种情况下 *&var 是一种不必要的复杂方式来编写 var.

What's the point of substracting 1 from reference?

在这种情况下,引用的值是一个整数。整数减去1.f的要点是得到比较小的浮点型数值