问题标签 [operators]

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 投票
11 回答
11486 浏览

c++ - 为什么 ++i 被认为是左值,而 i++ 不是?

为什么 ++i 是左值而 i++ 不是?

0 投票
5 回答
873 浏览

c++ - 一个操作符 ==,其参数是非常量引用

这个帖子,我看过这个:


在我们继续之前,这非常重要:

  • 不是在质疑任何人的编码能力。
  • 只是想知道为什么有人在比较中需要非常量引用。
  • 问题的发布 者没有编写该代码。

这是以防万一。这也很重要:

  • 我添加了/*const*/s 并重新格式化了代码。

现在,我们回到主题:

我想不出一个可以让您修改其按引用参数的等式运算符的合理使用。你?

0 投票
3 回答
2199 浏览

c++ - C++ 运算符歧义

原谅我,因为我对 C++ 还很陌生,但是我在操作符歧义方面遇到了一些麻烦。对于在我的桌面上编译的代码,我认为它是特定于编译器的。但是,它无法在我的笔记本电脑上编译。我想我知道出了什么问题,但我没有看到一个优雅的解决方法。如果我犯了明显的错误,请告诉我。无论如何,这就是我想要做的:

我制作了自己的矢量类 Vector4,它看起来像这样:

然后我有这些导致问题的运算符:

我有转换运算符,以便我可以将 Vector4 类的实例传递给 glVertex3fv,并且出于明显的原因我有下标。但是,涉及下标 Vector4 的调用对编译器来说变得模棱两可:

以下是候选人:

为什么在 Vector4 上已经定义了下标运算符时,它会首先尝试将我的 Vector4 转换为 GLfloat*?有没有一种不涉及类型转换的简单方法?我只是犯了一个愚蠢的错误吗?感谢您提前提供任何帮助。

0 投票
3 回答
289 浏览

javascript - JavaScript 如何处理 ++ 运算符?

JavaScript 使用对象进行时髦的自动转换:

将打印:

这是因为 +,如果任何参数是对象/字符串,将尝试将所有参数转换为字符串,然后将它们连接起来。如果所有参数都是数字,则将它们加在一起。* 和 unary + 使用 toString(以及 valueOf,此处未显示)将对象转换为数字。

JavaScript 对 ++ 运算符有什么作用?

0 投票
13 回答
125652 浏览

c# - 运算符 == 不能应用于 C# 中的泛型类型吗?

根据MSDN==中运营商的文档,

对于预定义的值类型,相等运算符 (==) 如果其操作数的值相等则返回 true,否则返回 false。对于字符串以外的引用类型,== 如果它的两个操作数引用同一个对象,则返回 true。对于字符串类型,== 比较字符串的值。用户定义的值类型可以重载 == 运算符(请参阅运算符)。用户定义的引用类型也可以,尽管 默认情况下 == 对于预定义的和用户定义的引用类型的行为如上所述。

那么为什么这个代码片段无法编译呢?

我收到错误Operator '==' cannot be applied to operands of type 'T' and 'T'。我想知道为什么,因为据我所知,==运算符是为所有类型预定义的?

编辑:谢谢大家。起初我没有注意到该声明仅涉及引用类型。我还认为为所有值类型提供了逐位比较,我现在知道这是正确的。

但是,如果我使用引用类型,==运算符会使用预定义的引用比较,还是如果类型定义了运算符,它会使用运算符的重载版本?

编辑 2:通过反复试验,我们了解到==运算符在使用不受限制的泛型类型时将使用预定义的引用比较。实际上,编译器将使用它可以找到的最佳方法来处理受限类型参数,但不会再看下去了。例如,下面的代码将始终打印true,即使Test.test<B>(new B(), new B())被调用:

0 投票
31 回答
2429857 浏览

python - Python有三元条件运算符吗?

如果 Python 没有三元条件运算符,是否可以使用其他语言结构来模拟一个?

0 投票
5 回答
893 浏览

haskell - 我什么时候应该使用 $ (它总是可以用括号代替)?

从我正在阅读的内容来看,$它被描述为“将函数应用于其参数”。然而,它似乎不像(apply ...)在 Lisp 中那样工作,因为它是一个二元运算符,所以它看起来唯一的作用是有时有助于避免括号,比如foo $ bar quux代替foo (bar quux). 我理解对了吗?后一种形式是否被认为是“坏风格”?

0 投票
8 回答
2456 浏览

c# - 等效于 C# 中的 `IF ( X AND ( 2 ^ Y ) ) Then`

If在VB6中有这种情况

我想要 C# 中的相同等价物

我试着做

但这件事给了我一个错误。

这是我要转换为 C# 的完整 VB 代码

在上面的代码intNumber中可以是任何数字。

0 投票
6 回答
69642 浏览

vb.net - 是否有 C# 的 '??' 的 VB.NET 等价物 操作员?

C# 的运算符是否有 VB.NET 等价物??

0 投票
8 回答
11335 浏览

operators - 什么是原始的 Forth 运算符?

我对实现一个 Forth 系统很感兴趣,这样我就可以获得一些构建简单 VM 和运行时的经验。

在开始使用 Forth 时,通常首先了解堆栈及其运算符(DROP、DUP、SWAP 等),因此很自然地将这些视为原始运算符。但他们不是。它们中的每一个都可以分解为直接操作内存和堆栈指针的运算符。后来学习了 store (!) 和 fetch (@),它们可用于实现 DUP、SWAP 等(哈哈!)。

那么什么是原始运算符呢?哪些必须直接在运行时环境中实现,所有其他的都可以在其中构建?我对高性能不感兴趣;我想要一些我(和其他人)可以从中学习的东西。运算符优化可以稍后进行。

(是的,我知道我可以从图灵机开始,然后从那里开始。这有点极端。)

编辑:我的目标类似于引导操作系统或新编译器。我至少需要实现什么,以便我可以用这些原始构建块构建系统的其余部分?我不会在裸硬件上实现它;作为一项教育练习,我会编写自己的最小虚拟机。