问题标签 [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.
c++ - 为什么 ++i 被认为是左值,而 i++ 不是?
为什么 ++i 是左值而 i++ 不是?
c++ - C++ 运算符歧义
原谅我,因为我对 C++ 还很陌生,但是我在操作符歧义方面遇到了一些麻烦。对于在我的桌面上编译的代码,我认为它是特定于编译器的。但是,它无法在我的笔记本电脑上编译。我想我知道出了什么问题,但我没有看到一个优雅的解决方法。如果我犯了明显的错误,请告诉我。无论如何,这就是我想要做的:
我制作了自己的矢量类 Vector4,它看起来像这样:
然后我有这些导致问题的运算符:
我有转换运算符,以便我可以将 Vector4 类的实例传递给 glVertex3fv,并且出于明显的原因我有下标。但是,涉及下标 Vector4 的调用对编译器来说变得模棱两可:
以下是候选人:
为什么在 Vector4 上已经定义了下标运算符时,它会首先尝试将我的 Vector4 转换为 GLfloat*?有没有一种不涉及类型转换的简单方法?我只是犯了一个愚蠢的错误吗?感谢您提前提供任何帮助。
javascript - JavaScript 如何处理 ++ 运算符?
JavaScript 使用对象进行时髦的自动转换:
将打印:
这是因为 +,如果任何参数是对象/字符串,将尝试将所有参数转换为字符串,然后将它们连接起来。如果所有参数都是数字,则将它们加在一起。* 和 unary + 使用 toString(以及 valueOf,此处未显示)将对象转换为数字。
JavaScript 对 ++ 运算符有什么作用?
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())
被调用:
python - Python有三元条件运算符吗?
如果 Python 没有三元条件运算符,是否可以使用其他语言结构来模拟一个?
haskell - 我什么时候应该使用 $ (它总是可以用括号代替)?
从我正在阅读的内容来看,$
它被描述为“将函数应用于其参数”。然而,它似乎不像(apply ...)
在 Lisp 中那样工作,因为它是一个二元运算符,所以它看起来唯一的作用是有时有助于避免括号,比如foo $ bar quux
代替foo (bar quux)
. 我理解对了吗?后一种形式是否被认为是“坏风格”?
c# - 等效于 C# 中的 `IF ( X AND ( 2 ^ Y ) ) Then`
我If
在VB6中有这种情况
我想要 C# 中的相同等价物
我试着做
但这件事给了我一个错误。
这是我要转换为 C# 的完整 VB 代码
在上面的代码intNumber
中可以是任何数字。
vb.net - 是否有 C# 的 '??' 的 VB.NET 等价物 操作员?
C# 的运算符是否有 VB.NET 等价物??
?
operators - 什么是原始的 Forth 运算符?
我对实现一个 Forth 系统很感兴趣,这样我就可以获得一些构建简单 VM 和运行时的经验。
在开始使用 Forth 时,通常首先了解堆栈及其运算符(DROP、DUP、SWAP 等),因此很自然地将这些视为原始运算符。但他们不是。它们中的每一个都可以分解为直接操作内存和堆栈指针的运算符。后来学习了 store (!) 和 fetch (@),它们可用于实现 DUP、SWAP 等(哈哈!)。
那么什么是原始运算符呢?哪些必须直接在运行时环境中实现,所有其他的都可以在其中构建?我对高性能不感兴趣;我想要一些我(和其他人)可以从中学习的东西。运算符优化可以稍后进行。
(是的,我知道我可以从图灵机开始,然后从那里开始。这有点极端。)
编辑:我的目标类似于引导操作系统或新编译器。我至少需要实现什么,以便我可以用这些原始构建块构建系统的其余部分?我不会在裸硬件上实现它;作为一项教育练习,我会编写自己的最小虚拟机。