2016-08-24 83 views
0

我想实现快速随机生成的,我遇到了这个网站:https://en.wikipedia.org/wiki/Xorshift,其中提出了如下的代码C++ const使用。我可以删除它吗?

#include <stdint.h> 

/* The state must be seeded so that it is not everywhere zero. */ 
uint64_t s[2]; 

uint64_t xorshift128plus(void) { 
    uint64_t x = s[0]; 
    uint64_t const y = s[1]; 
    s[0] = y; 
    x ^= x << 23; // a 
    s[1] = x^y^(x >> 17)^(y >> 26); // b, c 
    return s[1] + y; 
} 

我想知道如果常量在这里有什么用,我可以放心地将其删除?

+3

这是C.不要相信短语“C/C++”。 – Ohashi

+0

是的,你可以,为什么你认为你不能?你为什么要删除它? –

回答

5

const这里防止y被意外修改;例如,如果程序员在第四个语句中误将x错误地编号为yy ^= x << 23),编译器会抱怨。

您可以按原样删除它,但程序没有语义影响,但我不明白为什么要这么做。

+0

我将此转换为c#,其中consts有更严格的使用。我很惊讶地看到它,并想知道我是否错过了一些东西。谢谢 – Yann

0

您可以删除const,但不应该这样做。

实际上,const变量指出变量不能更改。如果您尝试更改,则无法编译它。如果变量更改会导致程序发生逻辑错误,我们通过使用const变量来阻止它。

相关问题