C# 做什么?
我一直在分析源代码,但我一直在努力理解 在本次评估中,这两者一起做什么C# 做什么?,c#,operands,C#,Operands,我一直在分析源代码,但我一直在努力理解 在本次评估中,这两者一起做什么 array[i] ^= 5; ^=操作数代表什么? 它在这样做吗 array[i] = array[i] ^ 5; 谢谢你。这叫做一个。复合赋值运算符的形式为 ω= 其中,ω是一个二进制运算符。复合作业 a ω= b 大致相当于 a = a ω b array[i] = array[i] ^ 5 除了a只计算一次 那么,在你的情况下 array[i] ^= 5 大致相当于 a = a ω b array
array[i] ^= 5;
^=
操作数代表什么?
它在这样做吗
array[i] = array[i] ^ 5;
谢谢你。这叫做一个。复合赋值运算符的形式为
ω=
其中,ω
是一个二进制运算符。复合作业
a ω= b
大致相当于
a = a ω b
array[i] = array[i] ^ 5
除了
a
只计算一次
那么,在你的情况下
array[i] ^= 5
大致相当于
a = a ω b
array[i] = array[i] ^ 5
但要保证数组[i]
只计算一次:
using System.Console;
class MainClass
{
static int[] A() { Write("A"); return new int[] { 23 }; }
static int B() { Write("B"); return 0; }
static int C() { Write("C"); return 42; }
public static void Main()
{
WriteLine("Compound Assignment:");
A()[B()] += C();
// ABC
WriteLine("\nExplicit Assignment:");
A()[B()] = A()[B()] + C();
// ABABC
}
}
这被称为一个。复合赋值运算符的形式为
ω=
其中,ω
是一个二进制运算符。复合作业
a ω= b
大致相当于
a = a ω b
array[i] = array[i] ^ 5
除了
a
只计算一次
那么,在你的情况下
array[i] ^= 5
大致相当于
a = a ω b
array[i] = array[i] ^ 5
但要保证数组[i]
只计算一次:
using System.Console;
class MainClass
{
static int[] A() { Write("A"); return new int[] { 23 }; }
static int B() { Write("B"); return 0; }
static int C() { Write("C"); return 42; }
public static void Main()
{
WriteLine("Compound Assignment:");
A()[B()] += C();
// ABC
WriteLine("\nExplicit Assignment:");
A()[B()] = A()[B()] + C();
// ABABC
}
}
是的,这就是它的意思我不明白,不是应该是比较运算符吗?像
(true^false)
会返回true,而(true^true)
会返回false?数组[i]^5
是如何工作的5
在这里不能被视为布尔值:s^是按位异或运算符。它对布尔数和整数都有效。更多信息,请参阅。是的,这就是它的意思。我不明白,^不应该是比较运算符吗?像(true^false)
会返回true,而(true^true)
会返回false?数组[i]^5
是如何工作的5
在这里不能被视为布尔值:s^是按位异或运算符。它对布尔数和整数都有效。有关详细信息,请参阅。a
在这两种情况下仅计算一次。我想不出一个运算符在哪里它们不完全(不只是大致)等价。那么为什么C♯ 设计师们觉得不仅需要明确说明,甚至需要在整个段落中对其进行说明:“如果所选运算符的返回类型隐式转换为x
类型,则该操作的计算结果为x=x op y
,但x
仅计算一次。否则,如果所选运算符是预定义运算符,如果所选运算符的返回类型可显式转换为x
类型,如果y
可隐式转换为x
类型,或者该运算符是移位运算符,则该操作的计算结果为x=(T)(x op y)
,其中,T
是x
的类型,但x
仅计算一次。“术语“仅计算一次”是指在x op y
的计算中,x
的任何组成表达式的结果被临时保存,然后在执行x
赋值时重新使用。例如,在赋值A()。“事实上,我的阅读方式有所不同。对我来说,第一段听起来像是独立的,它指定了绑定发生的时间,以及如果左侧表达式是动态的,返回类型是什么。它说:“下面描述的解析将根据运行时类型在运行时进行”,这对我来说表明,该段下面的任何内容都将发生,而不管该类型是否为动态的,只是在不同的时间。我从那一节中编写了这个示例,它似乎验证了我的解释:a
在这两种情况下只计算一次。我想不出一个运算符在哪里它们不完全(不只是大致)等价。那么为什么C♯ 设计师们觉得不仅需要明确说明,甚至需要在整个段落中对其进行说明:“如果所选运算符的返回类型隐式转换为x
类型,则该操作的计算结果为x=x op y
,但x
仅计算一次。否则,如果所选运算符是预定义运算符,如果所选运算符的返回类型可显式转换为x
类型,如果y
可隐式转换为x
类型,或者该运算符是移位运算符,则该操作的计算结果为x=(T)(x op y)
,其中,T
是x
的类型,但x
仅计算一次。“术语“仅计算一次”是指在x op y
的计算中,x
的任何组成表达式的结果被临时保存,然后在执行x
赋值时重新使用。例如,在赋值A()。“事实上,我的阅读方式有所不同。对我来说,第一段听起来像是独立的,它指定了绑定发生的时间,以及如果左侧表达式是动态的,返回类型是什么。它说:“下面描述的解析将根据运行时类型在运行时进行”,这对我来说表明,该段下面的任何内容都将发生,而不管该类型是否为动态的,只是在不同的时间。我将该部分中的示例编码,它似乎验证了我的解释: