Language agnostic 使用&;及&;操作人员

Language agnostic 使用&;及&;操作人员,language-agnostic,operators,Language Agnostic,Operators,同样的问题也适用于|和| | &和&&运算符的用途是什么?我能想到的唯一用途是 使用& 布尔值/返回布尔值的函数的逻辑短路。通常使用&&运算符 我想不出我用过它的任何其他案例。 有人知道其他用途吗 -编辑-为了澄清,我询问的是任何语言。我看到DateTime使用“-”返回时间跨度,字符串使用“+”创建新字符串,等等。我不记得有任何自定义数据类型使用&&和&。所以我问他们(合理地)有什么用?我不知道有一个例子。非常一般的问题,我假设您使用的是Java、C#或其他类似语法。在VB中,它相当于字符串上

同样的问题也适用于|和| |

&和&&运算符的用途是什么?我能想到的唯一用途是

使用&
布尔值/返回布尔值的函数的逻辑短路。通常使用&&运算符

我想不出我用过它的任何其他案例。
有人知道其他用途吗


-编辑-为了澄清,我询问的是任何语言。我看到DateTime使用“-”返回时间跨度,字符串使用“+”创建新字符串,等等。我不记得有任何自定义数据类型使用&&和&。所以我问他们(合理地)有什么用?我不知道有一个例子。

非常一般的问题,我假设您使用的是Java、C#或其他类似语法。在VB中,它相当于字符串上的+,但我认为这是另一个故事


据我所知,如果你是用C#来表达的话,你的陈述是正确的。

非常一般的问题,我假设你是用Java、C#或其他类似的语法来表达的。在VB中,它相当于字符串上的+,但我认为这是另一个故事


据我所知,如果你用C#来说话,你的说法是正确的。

在大多数基于C的语言中,这些运算符的含义是:

  • &&
    -布尔和。用于布尔表达式,如
    if
    语句
  • | |
    -布尔或。用于布尔表达式,如
    if
    语句
  • &
    -按位和。用于
    两个操作数的位
  • |
    -按位或。用于
    两个操作数的位
但是,这些都不能保证是这样的。由于每种语言都定义了自己的运算符,因此这些字符串可以定义为不同语言中的任何内容

从您的编辑中,您似乎正在使用C#。上述描述适用于C#,其中
|
&
也是条件运算符(取决于上下文)


至于您所说的
DateTime
+
运算符,这与您提到的其他运算符及其含义无关。

在大多数基于C的语言中,这些运算符的含义是:

  • &&
    -布尔和。用于布尔表达式,如
    if
    语句
  • | |
    -布尔或。用于布尔表达式,如
    if
    语句
  • &
    -按位和。用于
    两个操作数的位
  • |
    -按位或。用于
    两个操作数的位
但是,这些都不能保证是这样的。由于每种语言都定义了自己的运算符,因此这些字符串可以定义为不同语言中的任何内容

从您的编辑中,您似乎正在使用C#。上述描述适用于C#,其中
|
&
也是条件运算符(取决于上下文)


至于您所说的
DateTime
+
操作符-这与您提到的其他操作符及其含义无关。

如果是Javascript,请查看以下答案:

这里也有一个关于C#用法的简短讨论


Java还有一些运算符,如|=:

如果是Javascript,请查看以下答案:

这里也有一个关于C#用法的简短讨论


Java还有一些运算符,例如|=:

C使用&作为任何数据类型上的一元运算符来获取数据的地址

例如:

int i = 5;
cout<<&i;//print the address of i
inti=5;

coutC使用&作为任何数据类型上的一元运算符来获取数据的地址

例如:

int i = 5;
cout<<&i;//print the address of i
inti=5;

因为你之前关于这些算子的问题是关于C#,我想这个也是

通常,您希望使用条件运算符的短路版本来避免不必要的操作。如果第一个操作数的值足以确定结果,则无需计算第二个操作数

当某个条件依赖于previos条件为真时,只有短路运算符起作用,例如执行空检查和属性比较:

if (myObj != null && myObj.State == "active")
在这种情况下使用
&
运算符不会阻止对第二个操作数求值,并且会导致空引用异常

如果希望始终对两个操作数求值,例如当它们有副作用时,非短路运算符非常有用:

if (DoSomeWork() & DoOtherWork())
如果第一个方法返回false,则使用
&&
运算符将阻止调用第二个方法


&
|
也是二进制运算符,但由于
|
&
运算符不是二进制运算符,因此当您将它们用作二进制运算符时,不会产生歧义。

因为您之前关于这些运算符的问题是关于C的,我认为这一个也是

通常,您希望使用条件运算符的短路版本来避免不必要的操作。如果第一个操作数的值足以确定结果,则无需计算第二个操作数

当某个条件依赖于previos条件为真时,只有短路运算符起作用,例如执行空检查和属性比较:

if (myObj != null && myObj.State == "active")
在这种情况下使用
&
运算符不会阻止对第二个操作数求值,并且会导致空引用异常

如果希望始终对两个操作数求值,例如当它们有副作用时,非短路运算符非常有用:

if (DoSomeWork() & DoOtherWork())
如果第一个方法返回false,则使用
&&
运算符将阻止调用第二个方法

&
|
也是二进制运算符,但由于
|
&
运算符不是二进制运算符,因此不存在二进制运算符