If statement if和else if(C+;+;)中存在未声明的标识符错误
为什么我的代码中有“Q未声明标识符”错误If statement if和else if(C+;+;)中存在未声明的标识符错误,if-statement,If Statement,为什么我的代码中有“Q未声明标识符”错误 if(comboBox1->Text == "bbl/D (BPD)") { double Q = nQ; } else if (comboBox1->Text == "scf/D (SCFPD)") { double Q = nQ * 11; } else if(comboBox1->Text == "m^3/D (CUMPD)") { double Q = nQ * 11; 你还没有发布你的全部代码。但是您
if(comboBox1->Text == "bbl/D (BPD)")
{
double Q = nQ;
}
else if (comboBox1->Text == "scf/D (SCFPD)")
{
double Q = nQ * 11;
}
else if(comboBox1->Text == "m^3/D (CUMPD)")
{
double Q = nQ * 11;
你还没有发布你的全部代码。但是您将问题的范围限制在每个
if
块。在<代码>如果<代码>条件之外声明变量:
double Q;
if (comboBox1->Text == "bbl/D (BPD)")
{
Q = nQ;
}
else if (comboBox1->Text == "scf/D (SCFPD)")
{
Q = nQ * 11;
}
else if (comboBox1->Text == "m^3/D (CUMPD)")
{
Q = nQ * 11;
戴上我的心理调试帽[我从Raymond Chen那里廉价购买了:-]),几乎可以肯定的是,在代码的后面,当你真正尝试使用
Q
时
在块内声明Q
,如:
{
double Q = 42.0;
}
在大多数类似C语言中,在右大括号处会看到它超出范围,这意味着您以后将无法使用它
如果以后确实要使用它,请在If
序列之前声明它,并在块内分配给它,类似于:
double Q = 0.0;
if(comboBox1->Text=="bbl/D (BPD)") {
Q = nQ;
} else if(comboBox1->Text=="scf/D (SCFPD)") {
Q = nQ * 11;
} else if(comboBox1->Text=="m^3/D (CUMPD)") {
Q = nQ * 11;
}
// Now you can use Q.
还要注意的是,如果您的语言是C(您在当前问题中没有实际指定它),那么应该使用strcmp
系列来比较字符串,而不是=
。例如:
if (strcmp (comboBox1->Text, "bbl/D (BPD)") == 0)
如果您发现我给您的代码中,
Q
与其初始值没有变化,这是最可能的原因。请通过添加适当的标记来指定您使用的语言。类似于C。在示例中,每个分支定义了自己的Q
变量,该变量的持续时间与If语句块的持续时间一样长。将Q
(double Q;
)的声明移动到if
链上方。也可以使用strcmp而不是comboBox1->Text==“bbl/D(BPD)”
,它不会做你认为它会做的事情。当我这样做时,不要在if链中改变Q!在链的末端,它将是零。当我这样做时,不要在if链中改变Q!在链的末端,它将为零。@mojtaba,如果Q没有变化,则不满足任何条件。如果这是C,那是因为您使用的是=
而不是strcmp
。更新答案。我通过断点检查答案。如果约束为真,则实体将运行,但Q不会更改。按照你的建议,我会用strcmp检查一下。