if和else if(C ++)中未声明的标识符错误

时间:2015-09-04 13:30:21

标签: 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;

2 个答案:

答案 0 :(得分:1)

戴上我的心灵调试帽[我从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系列比较字符串, { {1}}。如:

==

如果你发现我给你的代码if (strcmp (comboBox1->Text, "bbl/D (BPD)") == 0) 没有从它的初始值改变,那么这是最可能的原因。

答案 1 :(得分:0)

您尚未发布整个代码。但是你将问题的范围限制在每​​个if块。在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;