递增和递减值
递增和递减
通常,你需要递增和递减一个值,尤其是在使用任意循环逻辑或与数据结构交互的代码时,这些数据结构包含多个数据元素。
+= 运算符会将其右侧的值与左侧的值相加,并进行赋值,因此以下代码片段中的第二行和第三行相同:
csharp
int value = 0;
value = value + 5;
value += 5;
int value = 0;
value = value + 5;
Console.WriteLine(value);
// 5
int value = 0;
value += 5;
Console.WriteLine(value);
// 5++ 运算符将变量的值递增 1,因此以下代码片段中的第二行和第三行相同:
csharp
int value = 0;
value = value + 1;
value++;你可使用这些方法来做减法、乘法等。以下练习步骤将重点介绍几种。
备注
运算符(如 +=、-=、*=、++ 和 --)被称为复合赋值运算符,因为除将结果赋给变量外,它们还复合一些运算符。 += 运算符被专门称为加法赋值运算符。
编写代码以递增和递减值
csharp
int value = 1;
value = value + 1;
Console.WriteLine("First increment: " + value);
value += 1;
Console.WriteLine("Second increment: " + value);
value++;
Console.WriteLine("Third increment: " + value);
value = value - 1;
Console.WriteLine("First decrement: " + value);
value -= 1;
Console.WriteLine("Second decrement: " + value);
value--;
Console.WriteLine("Third decrement: " + value);
// First increment: 2
// Second increment: 3
// Third increment: 4
// First decrement: 3
// Second decrement: 2
// Third decrement: 1备注
在“第二增量”中,我们使用的是 value += 1;。但我们可以使用任意文本 int 值(或变量)来递增该量。这同样适用于“第二个递减”:value -= 1;。
定位递增和递减运算符
递增和递减运算符都有一个有趣的特性:根据其位置,它们会在赋值之前或之后执行运算。换而言之,如果你在值(如 ++value 中)之前使用运算符,那么递增会在检索值之前出现。同样,value++ 会在检索值后递增值。
在值前后使用增量运算符
csharp
int value = 1;
value++;
Console.WriteLine("First: " + value);
Console.WriteLine("Second: " + value++);
Console.WriteLine("Third: " + value);
Console.WriteLine("Fourth: " + (++value));
// First: 2
// Second: 2
// Third: 3
// Fourth: 4注意此代码行:
csharp
Console.WriteLine("Second: " + value++);此方法分为两步:
- 检索变量
value的当前值,并在字符串串联操作中使用该值。 - 递增该值。
下一个代码行确认值,事实上已递增:
csharp
Console.WriteLine("Third: " + value);与此相反,请考虑代码的最后一行:
csharp
Console.WriteLine("Fourth: " + (++value));此时,已交换运算的顺序,因为 ++ 运算符位于操作数 value 之前。
- 递增该值。
- 检索变量
value的新递增值,并在字符串串联操作中使用该值。
我们在表达式 (++value) 周围添加了括号以提高可读性,但这并不是绝对必需的。查看众多彼此相邻的 + 运算符似乎会让其他开发者产生误解。像这样的样式决策是主观的。不过,由于只编写一次代码,而要读取多次,因此应优先处理可读性。
回顾
- 使用复合赋值运算符(如
+=、-=、*=、++和--)执行数学运算(如递增或递减),然后将结果赋给原始变量。 - 增量和减量运算符的执行方式不同,具体取决于运算符是在操作数之前还是之后。