void Encrypt( FileContent *pFile )
{
/* Get the key total ascii value */
DWORD asciiKeyValue;
for (DWORD i=0; i < pFile->keyLength; i++)
{
asciiKeyValue += pFile->encKey[i];
}
_tprintf(_T("[*]DEBUG The encKey ascii value is: %ld\n"), asciiKeyValue);
}
我在430
时获得DWORD asciiKeyValue
的输出,但DWORD asciiKeyValue = 0
230
的输出为asciiKeyValue
。
有人对此有解释吗? {{1}}变量在未分配显式值时是否获得随机值?
答案 0 :(得分:5)
它不会“变得”随机。当你声明你的DWORD
之前,它的地址中有任何内存。除非您将内存初始化为某些内容(例如0),否则内存不会清除。
答案 1 :(得分:4)
您永远不会初始化您只增加它的值。因此,它最初将具有最后写入的任何值。
如果你有:
DWORD asciiKeyValue = 0; // Or any other value
然后你会得到一致的结果。
答案 2 :(得分:4)
您没有初始化asciiKeyValue
。值不会像在其他语言中那样隐式地初始化为0。您需要明确设置起始值。我希望你的代码是:
DWORD asciiKeyValue = 0;
这将产生可预测的结果。
就像你从商店买了一个新的相框,你正在为它添加油漆。最后你可能会问:“为什么有一对幸福的情侣毁容的画面?我没画画!”解决方案是用空白画布替换默认随机照片。
答案 3 :(得分:1)
曾经听说初始化变量。那么你现在有:-)
DWORD asciiKeyValue = 0 ;
将解决您的问题。