第四个表达式算术运算

时间:2018-03-01 07:48:58

标签: forth gforth

Java 中,可以执行以下操作:

int var = 5;
var += 2;
var -= 2;
var *= 2;
var /= 2;

是否可以在Forth中执行此操作?

variable var
3 var !
1 var +! //Increment

是否有可能在Forth中执行其他操作?如果没有,任何关于如何提示?

2 个答案:

答案 0 :(得分:3)

除了使用-2 var +!递减之外,其他操作都没有内置。

你可以这样做:

: -! ( x addr -- )   swap negate swap +! ;
: *! ( x addr -- )   tuck @ * swap ! ;
: /! ( n addr -- )   tuck @ / swap ! ;

答案 1 :(得分:0)

有一个根本原因无法在Forth中完成。 我们有

  

int var,var1;

和Jave代码:

  

'var = var1;

除了Forth希望用空格分隔标记的问题之外,Forth希望单词始终执行相同的操作,而与上下文无关。 在Java代码中, var 是左侧,这意味着它必须表示一个存储内容的地址。 在右侧, var1 也代表一个地址。但是Java神奇地获取了地址的内容!在Forth中,我们不处理魔术。我们不能认为 var 现在正在执行然后执行。 只要您不了解魔术部分,您给出的示例都是可行的,如其他答案所述。

[当然,Forth也可以做魔术。您可以创建一个= -word,以检查后面的单词var是否为int类型,然后获取它。但这不是Forth,而是Java的Forth实现。]