31得票1回答
Idris 热心求值

在Haskell中,我可能会这样实现if语句:if。 if' True x y = x if' False x y = y spin 0 = () spin n = spin (n - 1) 这个表现符合我的预期: haskell> if' True (spin 100000...

29得票4回答
C++和PHP与C#和Java - 结果不平等

我发现在C#和Java中有一些奇怪的地方。 让我们看一下这段C++代码:#include <iostream> using namespace std; class Simple { public: static int f() { X = X +...

21得票14回答
评估骰子掷掷符号字符串

规则 编写一个接受字符串作为参数的函数,返回使用骰子符号表示的表达式的计算值,包括加法和乘法。 为了澄清问题,这里是合法表达式的EBNF定义:roll ::= [positive integer], "d", positive integer entity ::= roll | posit...

20得票6回答
为什么 "a^=b^=a^=b;" 和 "a^=b; b^=a; a^=b;" 不同?

我试过一些用Java交换两个整数而不使用第三个变量的代码,使用异或。 这是我尝试过的两个交换函数:package lang.numeric; public class SwapVarsDemo { public static void main(String[] args) { ...

15得票1回答
Java中的strictfp修饰符对现代CPU有任何影响吗?

我知道方法(以及类)中的 strictfp 修饰符的含义,根据 JLS: JLS 8.4.3.5,strictfp 方法: strictfp 修饰符的效果是使方法体内所有 float 或 double 表达式都显式地 FP-strict(§15.4)。 JLS 15.4 FP-str...

13得票3回答
C++11中一个表达式中同一变量的双重赋值问题

C++11标准 (5.17, expr.ass) 规定: 在所有情况下,赋值发生在左右操作数的值计算之后、赋值表达式的值计算之前。对于一个不确定顺序的函数调用,在复合赋值操作中,该操作是一个单独的评估。 据我理解,给定赋值的所有表达式都将在赋值本身之前进行求值。即使在同一赋值中两次...

12得票2回答
这个let表达式是如何工作的?

鉴于这行Haskell代码,我的任务是将其评估为最简单的形式。let g h k = (\x -> k (h x)) in g (+1) (\x -> x+x) 20 我已经得到了答案(当然,在GHCI中也对其进行了评估):42 但是,我想更好地理解这里实际上是如何进行评估的。一...

11得票6回答
将非最终对象传递给方法引用

s.get()第二次返回"ONE"的解释是什么?String x = "one"; Supplier<String> s = x::toUpperCase; System.out.println("s.get() = " + s.get()); x = "two"; System...

11得票4回答
JLS中f1() + f2()*f3()表达式的执行顺序和运算符优先级

假设有一个包含3个方法调用的表达式 f1() + f2()*f3(),Java会先计算(加法运算符的操作数)加法操作: int result = f1() + f2()*f3(); f1 working f2 working f3 working 我(错误地)预期先调用f2(),然后是f3...

10得票6回答
使用Java的递归表达式求值器

我打算编写一个只执行加法和减法的表达式求值器,我有一个简单的算法可以实现这个功能;但是,我遇到了一些实现问题。 我把表达式看作一个字符串。"(" <expression1> <operator> <expression2> ")" 这是我的算法String...