如果在if语句中实现,函数将存储值
Will function store value if implemented in if statement?
我正在编写一个c++代码来执行反向波兰符号运算。为此,我有一个堆栈类,它有一个布尔方法pop(value)
bool pop(int &value) {
if (isEmpty()) {
return false;
} else {
value = stack[topIndex];
return true;
}
};
其中堆栈上的顶部值存储在值中,然后从堆栈中删除。如果堆栈为空,则此pop方法返回false,否则返回true。
我的问题是,如果我像这样使用pop方法:
int a, b;
if (!stack.pop(a) || !stack.pop(b)) {
cout << "Error: stack is empty: << endl;
}
如果两次都返回true,则每种情况的堆栈的最高值是否存储在a和b中,或者我是否需要在if语句之外实现该方法?
您的if
是从左到右评估的,因此对于
if (!stack.pop(a) || !stack.pop(b)) {
首先设置a
,然后设置b
。
还要注意,对于pop
方法,您从未真正弹出堆栈——您只返回最顶部的值。
您所拥有的一切都很好。逻辑或运算符(||
)短路意味着只有在左侧评估为假时才执行右侧。在第一次弹出成功的情况下,左侧是false
,因此右侧也将被评估,并在堆栈不为空的情况下存储适当的值。
值将同时存储在a和b中。
注意pop函数传统上会删除列表的最后一个元素并将其返回给调用者。你所做的不是一件好事。
是的,pop函数将在if语句中正常执行,因此值将被存储。
相关文章:
- 是否可以将绑定函数存储在容器中?
- 不从成员函数C 存储返回值认为不良习惯
- 正在可能将任何类型的函数存储在一个可能的变量中
- 将具有任意参数和占位符的函数存储在类中,然后再调用它
- (C )将lambda函数存储在Boost Multi_Array中
- 使用 SSE 内部函数存储四个 16 位整数
- Boost绑定和Boost函数,将带有参数的函数存储在向量中,然后执行它们
- C++11可变模板函数存储
- 将结构变量从函数存储到局部结构变量
- 将多种类型的 lambda 函数存储在一种类型的变量中
- 函数存储在内存的哪一部分
- 构造函数存储与传入的内容不同
- 将boost::bind函数存储在std::map中
- 如何将参数从可变参数模板成员函数存储到向量中
- 将类成员函数存储在模板中
- 将一个对象的成员函数作为回调函数存储在另一个对象中
- 函数存储中的变量
- 需要某种方法将函数存储在列表中,然后调用它们
- 对象的成员函数存储在哪里
- 衰减lambda指向的函数存储在哪里?它是如何被释放的