如果在if语句中实现,函数将存储值

Will function store value if implemented in if statement?

本文关键字:函数 存储 实现 if 语句 如果      更新时间:2023-10-16

我正在编写一个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,则每种情况的堆栈的最高值是否存储在ab中,或者我是否需要在if语句之外实现该方法?

您的if是从左到右评估的,因此对于

if (!stack.pop(a) || !stack.pop(b)) {

首先设置a,然后设置b

还要注意,对于pop方法,您从未真正弹出堆栈——您只返回最顶部的值。

您所拥有的一切都很好。逻辑或运算符(||)短路意味着只有在左侧评估为假时才执行右侧。在第一次弹出成功的情况下,左侧是false,因此右侧也将被评估,并在堆栈不为空的情况下存储适当的值。

值将同时存储在a和b中。

注意pop函数传统上会删除列表的最后一个元素并将其返回给调用者。你所做的不是一件好事。

是的,pop函数将在if语句中正常执行,因此值将被存储。