use*_*903 31 java if-statement
让我说我有一个声明
if(stack.pop() == 1 && stack.pop() == 1)
Run Code Online (Sandbox Code Playgroud)
如果堆栈顶部为0,则不会实现第二个条件,这意味着它只会在顶部弹出一个值.我想要的是弹出顶部和顶部之后的值.如果不使用其他if-else语句,有没有办法做到这一点?
JB *_*zet 101
int first = stack.pop();
int second = stack.pop();
if (first == 1 && second == 1)
Run Code Online (Sandbox Code Playgroud)
dav*_*tto 45
使用bitwise AND operator**:
if( stack.pop() == 1 & stack.pop() == 1 )
Run Code Online (Sandbox Code Playgroud)
这将迫使双方进行评估.
**我通过逻辑AND的"非短路"知道它,但它确实是一个按位操作符,它作用于布尔操作数(这里的文档).
更新:正如JBNizet在下面的评论中所说,这段代码是"脆弱的",因为一些开发人员可能会"纠正"运营商的短路版本.如果你选择使用&而不是存储方法调用的值(强制它们运行)同样JBNizet回答,你应该在if语句之前写一个注释.
| 归档时间: |
|
| 查看次数: |
3165 次 |
| 最近记录: |