2013-10-14 42 views
0
#include <iostream> 
#include <math.h> 
#include <string.h> 

using namespace std; 

int main() 
{ 
    cout << "My Funny Program"; 

    do { 
     string Answer; 
     cout << "Are you stupid? (Yes/No)"; 
     cin >> Answer; 
     cout << endl; 
     cout << "Perhaps you are lying?"; 
    } 
    while (Answer == "No"); 

    cout << "Thank you for your honesty." << endl; 

    return 0; 
} 

我一直在试图让此代码正常工作;但是,每次出现错误“答案未在此范围内声明”时都会弹出。错误:未在此范围内声明“答案”

+2

请不要将随机的东西放在'tags'字段中。 – SLaks

+3

这是一个范围问题,看看你在哪里宣布'答案'和你在哪里使用它... – MadProgrammer

+0

那么我应该把答案? – user2877477

回答

1

我认为while条件超出了范围,如果块本身。所以string Answer必须在循环之外定义。

风格推荐:帽子用于类或常量或宏。避免将它们用于变量。

0
do{ 

     string Answer; 
     cout<< "Are you stupid? (Yes/No)"; 
     cin>>Answer; 
     cout<< endl; 
     cout<< "Perhaps you are lying?"; 

    } 

    while (Answer == "No"); 

由于Answer是在do-while内声明的,while部分不知道Answer的存在。

你必须之前做,而

0

Answer变量目前只有在它宣布{}之间的范围(循环体内)宣布答案。您需要在循环之前声明Answer

string Answer; 
do { 
    cout << "Are you stupid? (Yes/No)"; 
    cin >> Answer; 
    cout << endl; 
    cout << "Perhaps you are lying?"; 
} 
while (Answer == "No"); 
0

有趣的节目......

声明的do-while循环将解决你的问题之外的答案。你

string Answer; 
do { 

     cout << "Are you stupid? (Yes/No)"; 
     cin >> Answer; 
     cout << endl; 
     cout << "Perhaps you are lying?"; 
    } 
    while (Answer == "No"); 

也应该使用的<string>代替<string.h>

0
do { 
     string Answer; 
     cout << "Are you stupid? (Yes/No)"; 
     cin >> Answer; 
     cout << endl; 
     cout << "Perhaps you are lying?"; 
    } 
    while (Answer == "No"); 

do你宣布一个字符串变量Answer。然后,Answer被推入堆栈,但是,当程序计入}时,变量将被强制升高,这意味着在while语句中,Answer已被释放,并且编译器将Answer视为未定义的变量。