gpt4 book ai didi

c - 虽然循环不起作用

转载 作者:太空宇宙 更新时间:2023-11-04 02:26:31 25 4
gpt4 key购买 nike

while(!s.isEmpty() && prec(c) <= prec(s.peek())) {}

我程序中的上述语句正确执行

但是下面的语句给了我 emptyStackError

while(prec(c) <= prec(s.peek()) && !s.isEmpty()) {}

我所做的更改仅在 while 语句中,这会给我错误?为什么两种情况下的工作不同??

最佳答案

在你的while condition,有2个check,分别是and连同 && :

while(!s.isEmpty() && prec(c) <= prec(s.peek()))

这 2 个检查序列很重要。首先你需要检查是否stack是空的。如果是,则不会进行第二次检查。如果它不为空,则为 s.peek()prec(c) <= prec(s.peek()) 的堆栈上查看。

另一方面,如果您有:

while(prec(c) <= prec(s.peek()) && !s.isEmpty())

第二次检查!s.isEmpty()基本上没用,因为它没有阻止代码执行 s.peek() , 如果是 empty stack .所以它抛出 empty stack error / exception .

因此 s.isEmpty()必须先进行第二次检查。

关于c - 虽然循环不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50271363/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com