c++ - 结构错误表达式必须有 bool 类型

标签 c++ arrays function loops struct

今天我正在学习如何声明结构记录类型,如何在数组中应用结构化记录类型。所以基本上这就是我开始使用 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 的值并根据条件执行的地方。但我收到的错误是“结构错误表达式必须有 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;
    }

最佳答案

对于初学者来说,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)
   ^^^^^^^

关于c++ - 结构错误表达式必须有 bool 类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39150066/

相关文章:

c++ - 如何在 Windows 7 中以编程方式调用 Ctrl+Alt+Del 窗口

c++ - MongoDB C++ 驱动程序 - 8 位和 16 位整数?

c++ - 通过 sleep 控制吞吐量

java - Arrays.binarySearch() 如何在不排序的情况下工作

function - 我怎样才能在lua中链接函数调用?

c - 通过引用传递并将值赋给结构指针的指针

javascript - 从函数返回变量

c++ - 如何从 C 或 C++ 修改 Windows 操作系统的注册表

javascript - 数组偶尔返回重复值

c - 为什么这个 C 程序不能正常运行?