c++ - 三元运算符中的错误,抛出错误:“预期的主表达式在';'之前 令牌“
问题描述
#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]++:;
. ';' 之前
的错误是 预期的主要表达式 令牌,如果我删除最后一个分号,它会 在 ';' 之前引发另一个预期的错误 ':' 令牌。
解决方案
它以... ? flag[7]++ : ;
如果最后一个条件(之前?
)为假结束,则需要提供一个表达式(之后:
)。
那是因为a = b ? c : d;
需要为 提供一个值a
:它可以是c
或d
,取决于b
.
在您的情况下,如果条件为假,您将提供什么值?
推荐阅读
- informatica - 当我们在 informatica 中超过 10 位时如何将值更改为 0
- lua - Lua:表格:比较键(而不是它们的值)
- c# - 如何在 C# 和 SQL Server 中使用条件实现 fifo?
- python - Python - 在数据框中的行组之间输出空行
- angularjs - Webpack 包,指令未解析
- scala - 如何验证历史数据?
- sql-server - 将数据类型从 NVARCHAR 更改为 DECIMAL 不起作用
- apache-kafka - 无法在附加程序 [Kafka] java.util.concurrent.TimeoutException 中写入 Loh4j2 中的 Kafka
- java - 如何跨区域获取未附加的ec2 Ebs卷列表
- php - 合并和区分数组数组以找到共同值