为什么我有一个" 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;
答案 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;