If statement if和else if(C+;+;)中存在未声明的标识符错误

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; 你还没有发布你的全部代码。但是您

为什么我的代码中有“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
块。在<代码>如果<代码>条件之外声明变量:

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检查一下。