首页 > 解决方案 > 即使变量为假,“如果”也会执行

问题描述

所以,我知道这个网站上有很多与此相关的问题,但我找不到与我的问题类似的问题。

cout<<"Please enter one or more floating point numbers"<<endl<<"When finished, enter 'q'"<<endl;

while(!done)

{
    cin>>Next;
    char letter;
    double temp;
    letter=Next[0];
    if (letter=='q')
        done=true;

    if (!done)
       temp = stod(Next);
       cout<<"temp is "<<temp<<" Next is "<<Next<<endl;
       localdata.push_back(temp);
}

100.0输入, 10.0,1.0和的标准输出q是这样的 -

Please enter one or more floating point numbers
When finished, enter 'q'
100.0
The value of done is 0
temp is 100 Next is 100.0
10.0
The value of done is 0
temp is 10 Next is 10.0
1.0
The value of done is 0
temp is 1 Next is 1.0
q
The value of done is 1
temp is 1 Next is q

所以,问题在于,当标准输入为 时q, 的值done应该更改为true,但下一个仍然if(!done)被执行,这是不应该的。

可能是什么问题呢?我知道这一定是相当明显的事情,但我不能指望它!

标签: c++

解决方案


你省略了大括号。在 C++ 中,没有大括号,if只占用第一行。你应该使用大括号:

if (!done) {
    temp = stod(Next);
    cout<<"temp is "<<temp<<" Next is "<<Next<<endl;
    localdata.push_back(temp);
}

您可以if (letter=='q')保持原样(使用第一行),但最好在任何地方使用 {}。


推荐阅读