问题标签 [prefix-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 投票
3 回答
246 浏览

java - Java 前缀和一元运算符一起使用

我正在研究 Java 前缀运算符并遇到了这种行为

为什么会这样?

0 投票
2 回答
1420 浏览

python - 将 Postfix Python 代码转为前缀

我正在从interactivepython.org 学习Python。在这个站点上,他们有评估后缀表达式的代码。但我也想看看它是如何为前缀表达式完成的。这是代码:

如果我正确理解了这节课,我会改变操作数的顺序吗?

0 投票
2 回答
341 浏览

c++ - 为什么内置类型的链式前缀递增/递减不是 C++ 的 UB?

在 cpprefernce.com前缀增量的示例中,有这样的代码:

为什么在这种情况下链式增量不会导致 UB?在这种情况下是否违反了最多一次修改的规则?

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 投票
2 回答
239 浏览

c++ - GCC prefix increment operator misbehaving when passing value to the function

Prefix Increment operator not sending incremented value of the variable (x) in a call to printf(), when compiled with GCC.

Here is my code;

in main() method, the problem is at the line below;

X should be incremented and send to the bitcount() with the incremented value of x. The value of x is incremented however, instead of incremented value, the old value is send to the bitcount() function.

I've tried the same thing with MS VS, this misbehaving didn't occur. The outputs are as below;

Output of Program compiled with GCC on Windows 10

Output of Program compiled with MS VS on Windows 10

To ensure the problem, I've updated code to see the value which is sent to the function;

Bitcount V2

Output of Bitcount v2 compiled with GCC on Windows 10 system

Debug:: bitcount()::x=127 bitcount[127] : 7

Debug:: bitcount()::x=127 bitcount[128] : 7

As it is obvious, GCC sending the old value of X to bitcount() function.

To generalize the problem, I've written the program below;

InsideFunc.c

Output compiled with GCC on Windows 10 System

D:\C\chapter2>gcc InsideFunc.c -o InsideFunc.exe

D:\C\chapter2>InsideFunc

x: 127, func(): 127

x: 128, func(): 127

Again, value of the variable incremented but old value send to the function.

Here is my gcc version;

Any ideas ?

Late Note : I've just seen on The C Programming Language book of Kernighan & Ritchie, page 49 that which explains the order of evaluation in the function arguments are uncertain and compiler dependent;

Similarly, the order in which function arguments are evaluated is not specified, so the statement

printf("%d %d\n", ++n, power(2, n)); /*WRONG */

can produce different results with different compilers, depending on whether n is incremented before power is called. The solution, of course, is to write

++n;

printf("%d %d\n", n, power(2, n));

0 投票
2 回答
56 浏览

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

对比

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

0 投票
0 回答
46 浏览

c++ - 预增量加法混淆

你好 Stackoverflowers,

考虑到下面的预增量加法,你能解释一下为什么 j = 8 在下面的代码中吗?

0 投票
1 回答
850 浏览

infix-notation - 从布尔表达式中删除多余括号的算法

我有一个前缀表示法的布尔表达式。可以说是or and A B or or C D E。当我将它转换为中缀符号时,我最终得到 ((A and B) or ((C or D) or E)). 我想把它减少到(A and B) or C or D or E. 我应该减少中缀符号还是实际上更容易从前缀符号中获得简化的方程。我应该使用什么算法?

0 投票
3 回答
707 浏览

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

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

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

提前致谢。

0 投票
1 回答
1344 浏览

f# - 错误:表达式中出现意外的中缀运算符,关于成功编译的前缀运算符

玩弄中缀运算符后,我对以下内容感到惊讶:

val (>~~~) : 字符串 -> 字符串)

和:

意外的中缀运算符

更改前缀运算符的第一个字符(!~~~例如)修复它。我得到一个中运算符意外的错误是相当奇怪的。悬停显示定义为string -> string

我对这个错误并不感到惊讶,F# 要求 (iirc) 前缀运算符的第一个字符本身必须是预定义的前缀运算符之一。但是为什么它编译得很好,当我使用它时,编译器会抱怨?

更新:F# 编译器似乎知道在其他情况下,当我在运算符定义中使用无效字符时,它会显示“无效的运算符定义。前缀运算符定义必须使用有效的前缀运算符名称。”

无效的运算符定义。