首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >追踪奇怪的错误

追踪奇怪的错误
EN

Stack Overflow用户
提问于 2010-02-27 14:34:20
回答 2查看 112关注 0票数 3

我正在尝试做一些C++练习,但我在构建时遇到了一个错误,它并没有突然出现在我面前。我遗漏了什么?我刚从C#等人那里回到C++,几年前就做过了。

错误语法错误:'return‘/ERROR

代码语言:javascript
复制
#include <iostream>
using namespace std;

/* Pre-compiler directives / macros */
#define isValidDrinkChoice(Choice,MaxNumDrinks) ((Choice < MaxNumDrinks) && (Choice > 0))

/* Primary Entry Point for Executable */
int main(const int & argc, char * argv[]){

    const int MaxNumDrinks = 4;
    char ** Drinks;
    Drinks = new char* [MaxNumDrinks];
    Drinks[0] = "Soda";
    Drinks[1] = "Water";
    Drinks[2] = "Coffee";
    Drinks[3] = "Tea";
    Drinks[4] = "Perrier Sparkling Water";

    int Choice = -1;
    do while(!isValidDrinkChoice(Choice, MaxNumDrinks)) {
        cout << "Please select your favorite drink\r\n\r\n" << endl;
        for (int x = 0; x < MaxNumDrinks; x++) cout << "\t" << Drinks[x] << endl;
        cin >> Choice;
        if (isValidDrinkChoice(Choice, MaxNumDrinks)) cout << "\r\n\r\n" << "You chose " << *Drinks[Choice] << endl;
    }
    return 0;
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-02-27 15:20:48

更正后的代码示例是需要替换的while循环

代码语言:javascript
复制
#include <iostream>

namespace {
  bool isValidDrinkChoice(int Choice, int MaxNumDrinks) {
    return ((Choice < MaxNumDrinks) && (Choice >= 0));
  }
}

/* Primary Entry Point for Executable */
int main() {
    using namespace std;   

    const char *Drinks[] = {
      "Soda", "Water", "Coffee", "Tea", "Perrier Sparkling Water" };
    const int MaxNumDrinks = sizeof(Drinks) / sizeof(*Drinks);

    int Choice = -1;
    do  {
        cout << "Please select your favorite drink\r\n\r\n" << endl;
        for (int i = 0; i < MaxNumDrinks; i++) 
          cout << Drinks[i] << endl;

        cin >> Choice;

        if (isValidDrinkChoice(Choice, MaxNumDrinks)) 
          cout << "\r\n\r\n" << "You chose " << Drinks[Choice] << endl;
    } while(!isValidDrinkChoice(Choice, MaxNumDrinks) && cin) ;

    return cin.good() ? 0 : 1;
}
票数 3
EN

Stack Overflow用户

发布于 2010-02-27 14:37:58

我不认为在C++中有这样的do while。我是do { ... } while (expression);。或者while (expression) { ... }

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2346462

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档