c# - 算子的预增量
问题描述
我不明白为什么 i 和 k 的值在第 19 ,20 行后增量后仍然是 5?
i 的值仍然是 5,尽管在后增量之后。
`using System;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;
namespace Increment
{
class Program
{
static void Main(string[] args)
{
int i = 5;
int j = 10;
Console.WriteLine("before incrementing{0}",i);
i=i++;
Console.WriteLine("after incrementing {0}",i); //i=5?
int k = i;
Console.WriteLine("after incrementing i and assign {0}", k);//K=5?
}
}
}`
解决方案
将后增量和前增量想象为函数:
int PreIncrement(ref int i)
{
i = i + 1;
return i;
}
int PostIncrement(ref int i)
{
int valueBefore = i;
i = i + 1;
return valueBefore;
}
在这种情况下
i = i++;
相当于
i = PostIncrement(ref i);
您正在按以下顺序执行两项操作:
- 递增
i
- 设置
i
为等于它在增加之前的值
推荐阅读
- javascript - JavaScript 按钮在某一部分不起作用
- python - 基于列和行输出到 bool 的 Pandas 条件(替换“for”语句)
- amazon-web-services - 将基于 API 的服务发现返回到 AWS Cloud Map 的 Ip 顺序
- c - 如何在 OS 编程中从 VGA 切换到 SVGA
- powershell - 导入模块后如何使“未批准的动词”警告消息静音?
- java - JNI 代码无法在 Linux 而不是 Windows 上调用 C 函数
- python-3.x - 关于python中的员工记录
- c# - 如何结合“IObservable”
IsActive”和“bool IsEnabled”在一个订阅中 - c# - 来自 Windows 音频输出的 C# 低音检测
- r - 如果 Pr(boys)=0.51,则 5 个婴儿中恰好有 3 个男孩的概率