结构错误表达式必须为bool类型
struct error expression must have bool type
今天我正在学习如何声明结构记录类型,在数组中应用结构化记录类型。基本上这就是我开始使用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)
^^^^^^^
你做错了两件事:
-
您将数组定义为
myStock stock[4];
,这意味着您需要执行stock[0]
到stock[3]
而不是stock[1]
到stock[4]
。 -
另外,如果你定义你的结构体有
bool award;
,那么你应该使用stock[x].award = true;
和stock[x].award = false;
而不是stock[x].award = 0;
和stock[x].award = 1;
一个bool类型想要真或假,虽然1或0不应该给你任何编译器上的错误。
相关文章:
- 为什么在这种情况下,bool 类型的输出等于 0?
- 将“nullptr”分配给“bool”类型.哪个编译器是正确的
- 在 lambda 表达式中自动推导出的类型是什么,用于修改 bool 类型的向量(特殊容器)
- 使用类型"bool"类型的值初始化类型"int &"(非常量限定)的引用是否是一种黑客?
- 为什么 WinAPI 对 BOOL 类型使用 int(32 位)
- 我可以在C++获得非特化的载体<bool>类型吗?
- unordered_map的默认构造函数,bool类型将设置为false
- 这是自动读写bool类型的正确方法吗?
- 当使用自定义trait和bool类型的c++11枚举时,clang的编译错误
- 为什么在c++中函数指针地址以bool类型打印
- c++ ! !转换为bool类型
- 用于排序容器的隐式转换为显式bool类型
- bool类型变量如何存储在内存中?(c++)
- 带bool类型的字符串初始化
- diab 5.7编译器中的逻辑与运算符返回非bool类型
- 为什么包含未使用的bool类型会影响char类型的引用?
- 结构错误表达式必须为bool类型
- 我可以使用' bool '类型或不透明指针指向导出到c的c++函数中的类吗?
- 为什么sscanf不能正常工作与bool类型
- 从布尔值构造具有底层"bool"类型的枚举?