首页 > 解决方案 > 三元运算符中的错误,抛出错误:“预期的主表达式在';'之前 令牌“

问题描述

#include <iostream>
#include <string.h>

using namespace std;

struct menuItemType {
    string mennuItem;
    double menuPrice;
};

int main() {
    int choice, flag[8]={0}, iNum;
    cout << "Our menu includes:" << endl << "1. Plain Egg $1.45" << endl << "2.Bacon and Egg $2.45" << endl << "3. Muffin $0.99" << endl << "4. French Toast $1.99" << endl <<"5. Fruit Basket $2.49" << endl << "6. Cereal $0.69" << endl <<"7. Coffee $0.50" << endl <<"8. Tea $0.75" << endl;
    menuItemType menuList[8]={{"Plain Egg",1.45},{"Bacon and Egg",2.45},{"Muffin",0.99},{"French Toast",1.99},{"Fruit Basket",2.49}, {"Cereal",1.99},{"Coffee",0.50},{"Tea",0.45}};
    cout << "how many items you wish to order?";
    cin >> choice;
    for (int i=0;i<choice;i++) {
        cout << "enter item number" << i;
        cin >> iNum;
        iNum==1?flag[0]++:iNum==2?flag[1]++:iNum==3?flag[2]++:iNum==4?flag[3]++:iNum==5?flag[4]++:iNum==6?flag[5]++:iNum==7?flag[6]++:iNum==8?flag[7]++:; 
    }
    
    
    return 0;
}

我不明白为什么它会在iNum==1?flag[0]++:iNum==2?flag[1]++:iNum==3?flag[2]++:iNum==4?flag[3]++:iNum==5?flag[4]++:iNum==6?flag[5]++:iNum==7?flag[6]++:iNum==8?flag[7]++:;. ';' 之前
的错误是 预期的主要表达式 令牌,如果我删除最后一个分号,它会 在 ';' 之前引发另一个预期的错误 ':' 令牌

标签: c++nestedconditional-operator

解决方案


它以... ? flag[7]++ : ; 如果最后一个条件(之前?)为假结束,则需要提供一个表达式(之后:)。

那是因为a = b ? c : d;需要为 提供一个值a:它可以是cd,取决于b.

在您的情况下,如果条件为假,您将提供什么值?


推荐阅读