问题标签 [postfix-operator]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
113 浏览

python - 学习后缀

当我在这个站点上浏览后缀时,我只是感到困惑,因为在中缀前缀和后缀的定义之后,它解释了如何应用后缀的规则,正如它完全所说:前缀表达式表示法要求所有运算符在两个操作数之前他们的工作。另一方面,后缀要求其运算符位于相应的操作数之后。

例子:

A + B * C = 正常使用(中缀)

A + B * C = 现在,如果我们想将其转换为前缀,我们必须将所有运算符移动到它们处理的两个操作数之前。即 + 将出现在 A 之前,* 将出现在 B 之前。好的,到目前为止一切都很好。
+ A * BC = 前缀

A + B * C = 现在如果我们想将其转换为后缀,我们必须将运算符移动到它们处理的两个操作数之后,即 +应该在 B 之后,* 将在 C 之后。根据规则应该是这样的:AB + C *但在示例中它向我们展示了:
ABC * + = Postfix。

请解释我哪里出错了。

提前致谢

--
问候
Pradeep

0 投票
1 回答
251 浏览

c - Postfix ++ 运算符在 While 条件内的行为不符合预期

我为Brian Kernighan的“ C 编程语言练习 1-19编写了一个简单的解决方案,它可以反转字符串。reverse(char[])功能如下,一切正常;

但是,如果我在 while 循环中使用后缀增量 (++) 运算符,则函数将失败;

唯一的区别是,我没有在 while 循环中增加变量len,而是使用了后缀 ++ 运算符,其行为预期应该是“使用旧值进行条件检查,完成后增加它”。

为什么它没有按预期工作,我在哪里做错了?我在 Windows 10 Mingw/gcc 编译器下编译它。这是整个测试代码;

测试代码

0 投票
2 回答
120 浏览

c++ - 后缀运算符不应该被视为二元运算符吗

后缀运算符带有一个int参数。已经有一个关于为什么的问题,答案似乎是:“因为 Bjarne Stroustrup 这么说

我对这个答案感到不舒服。如果 Bjarne Stroustrup 需要一些东西来提示编译器以使其行为不同,那么他为什么不能直接关闭操作符是否返回引用呢?这让我产生疑问:

  1. 为什么我不能这样做:foo++ 13;
  2. 为什么int参数不默认为1
  3. 为什么这被认为是一元运算符,它需要一个参数
0 投票
2 回答
56 浏览

java - 不涉及其他操作时前缀与后缀增量?

对比

使用前缀增量或使用后缀增量是否会对给定的两个语句产生影响(重点是那里不涉及其他操作,除了递增变量)?

0 投票
1 回答
81 浏览

scala - 为什么不;相当于eol?

这是按预期编译的代码

一个不

唯一的区别是;sum.

0 投票
3 回答
891 浏览

java - 一元运算符在Java中同时使用后缀和前缀

我用简单的英语提出的问题:为什么这行得通someObject.methodReturnsInteger().getClass()(我不是真的指getClass方法。只是一种与 Integer 一起工作的方法。而且我并不是真的指专门返回 Integer 的方法。)但这不是++a++吗?

换句话说,为什么(或如何)解析(或标记化)允许在第一个中使用返回值,但在第二个中不允许使用?我的意思是,它不应该像这样解析后者:(++a)++并使用返回++a作为数字吗?

类似的情况也是如此:a+++++b

我希望这个问题足够清楚。

感谢您的时间。

0 投票
3 回答
209 浏览

perl - 后缀或自定义后缀运算符的 Perl 自定义语法

我想知道如何运行这样的操作

并让他们编译。我对他们的结果是什么或如何实施并不挑剔。我的目标是让带有传统后缀单元注释的物理量表达式编译为这些单元的 perl 表达式。

我认为我需要使用自定义解析技术,但我更喜欢使用任何现有的功能或解析模块,而不是将正则表达式过滤器应用于我的原始源。

Parse::Keyword似乎很有希望,但我看不出它是否可以解析后缀操作,并且它声称已被弃用。

编辑:如果可能,我想避免使用源过滤器,因为我不想为 Perl 的语法极端情况编写正则表达式(例如“25 (J/K)”)。

Perl 在这里产生的错误告诉我们:

似乎我需要挂钩 Perl 在数字文字之后检测运算符的位置。

Devel::Declare可以添加后缀运算符吗?如果是这样,怎么做?

0 投票
3 回答
707 浏览

c# - C# 中的前缀和后缀运算符重载

以下代码存在运行时问题,即通过分配后缀/前缀增量语句产生的意外引用,如下面的代码所示。如果有的话,任何人都可以向我建议一种将对象视为 C# 中的值类型的方法吗?

我相信代码有很好的文档记录,并带有阐明每个重要状态的注释。随时询问有关澄清代码或手头问题的任何问题。

提前致谢。

0 投票
2 回答
333 浏览

java - 为什么自减和自增操作后的结果是2

有一些代码:

我知道前缀和后缀运算符。但是你能解释一下这些表达式中执行的操作顺序吗?

0 投票
0 回答
654 浏览

parsing - 使用二进制前缀、中缀和后缀运算符解析表达式

是否可以解析可以包含二进制前缀、二进制中缀和二进制后缀运算符(假设所有符号都不同)的表达式(没有歧义),并且它们之间具有优先级?例如:

Thena等于 5,因为=它的优先级低于后缀post+运算符,并且b14. 我知道您可以使用运算符优先级解析或分流场来解析中缀表示的表达式,但这个问题对我来说似乎要复杂得多。

编辑:

允许使用括号,并且运算符的前后变化具有与中缀相同的优先级。

我想推出一个手写算法。

编辑2:

我所说的优先级是指消耗多少。例如这个:

可能导致这些 AST-s:

(第二个是我在这种情况下需要的)。我不能真正使用现有的解析器生成器或操作数的固定语法,因为运算符是动态加载的。