今天我学习如何声明结构记录类型,在数组中应用结构化记录类型。所以基本上这就是我从使用struct开始编码的方式。
struct myStock
{
string title;
double price;
int stock_lvl;
bool award;
};
myStock stock[4]; //store 4 record
void initialize()
{
stock[1].title = "Ilo Ilo";
stock[1].price = 35.55;
stock[1].stock_lvl = 15;
stock[1].award = 1;
stock[2].title = "Money Just Enough";
stock[2].price = 10.35;
stock[2].stock_lvl = 0;
stock[2].award = 0;
stock[3].title = "My Mother-in-Law";
stock[3].price = 22.50;
stock[3].stock_lvl = 5;
stock[3].award = 0;
stock[4].title = "Stars";
stock[4].price = 22.95;
stock[4].stock_lvl = 1;
stock[4].award = 1;
}
一切正常但是当我来到这个部分时,这个部分是数组将循环并检查stock_lvl
的值并基于条件并执行的部分。但是我收到的错误是" struct error表达式必须有bool类型"。我在这里做错了吗?我不是要求回答,但也许有人可以向我解释一下?
int replenishStock()
{
for(int i=0; i<4; i++)
{
if(myStock[i].stock_lvl < 2)
{
myStock[i].award = true;
myStock[i].stock_lvl = +10;
}
else
myStock[i].stock_lvl = +5;
}
答案 0 :(得分:2)
对于初学者,N个元素数组的有效索引范围是[0,N-1]。所以这些陈述
stock[4].title = "Stars";
stock[4].price = 22.95;
stock[4].stock_lvl = 1;
stock[4].award = 1;
对4个元素的数组无效。
对于错误消息,似乎不是像这样的语句中的结构名称
if(myStock[i].stock_lvl < 2)
^^^^^^^
您必须使用数组名称
if(stock[i].stock_lvl < 2)
^^^^^^^
答案 1 :(得分:0)
你在这里犯了两件事:
您将数组定义为echo $_GET['id'];
echo $_GET['username'];
,这意味着您需要myStock stock[4];
到stock[0]
而不是stock[3]
到stock[1]
。< / p>
此外,如果您将结构定义为stock[4]
,则应使用bool award;
和stock[x].award = true;
代替stock[x].award = false;
和stock[x].award = 0;
A bool类型想要true或false,尽管1或0不应该在任何编译器上给你一个错误。