使用未初始化的局部变量'j'
uninitialized local variable 'j' used
这是我的一些代码的一部分。我收到一个错误,使用了未初始化的局部变量"j",但我看不到它。据我所知,它正在被使用。有人可以帮忙吗?
float Calculate(Element ElmAry[30], Formula FormAry[30])
{
int i;
int j;
float MoleWT = 0;
float MoleSum = 0;
char e1;
char e2;
char f1;
char f2;
for(i = 0; i < 30; i++) {
f1 = FormAry[j].Element1;
f2 = FormAry[j].ElementA;
e1 = ElmAry[i].eN1;
e2 = ElmAry[i].eN1;
if(e1 == f1 && e2 == f2) {
MoleWT = ElmAry[i].Weight * FormAry[j].Atom;
MoleSum = MoleSum + MoleWT;
j++;
}
}
return MoleSum;
}
所以你在行中首先使用变量j
f1 = FormAry[j].Element1;
但是您之前没有为j
分配任何值,因此"未初始化"。之前提到j
是在你的声明中:
int j;
您需要为其赋值,例如 0:
int j = 0;
这就是所谓的"初始化",因为如果你不给变量赋任何值,你应该从该变量中得到什么值?
您没有给j
一个值,因此uninitialized variable
错误。
int j;
与j
分配值 0 不同。
你应该做的:int j = 0;
错误不是正在使用j
。 错误是正在使用j
但未初始化。
我建议将for
循环更改为:
for(i=0, j=0; i < 30; i++, j++)
因为我认为这可能是您实际上想要做的......
相关文章:
- 为什么C++有不同的变量初始化方式?
- 静态 constexpr 成员变量初始化
- C++不同的变量初始化
- 全局和局部变量初始化与 constexpr 的差异背后的基本原理
- 是变量初始化失败吗?
- 视觉C++:在 DLL 加载期间,全局变量初始化顺序是否具有确定性?
- 类静态变量初始化顺序
- 使用 constinit 变量初始化 constexpr 变量
- 是否可以在不修改父类的情况下将成员变量初始化推迟到继承的类?
- 如何将局部变量初始化为C++的未知值
- 使用全局变量初始化不同编译单元中的其他全局变量
- 使用默认构造函数引用成员变量初始化错误
- 宏的 if 语句中的变量初始化
- 不稳定的C :每行适应性变化多变量初始化
- DLL 中的 C++ 静态局部变量初始化会导致_CrtIsValidHeapPointer异常
- C++-局部未初始化变量的值
- 在VS2015中c++局部静态变量初始化线程安全吗?
- 多线程环境中的静态局部变量初始化
- 局部静态变量初始化是线程安全的
- C++11 中线程安全局部静态变量初始化的成本