c#-4.0 - 为什么这个整数不增加两次?

标签 c#-4.0 post-increment

我对下面代码的结果感到困惑。为什么“b”在执行这些操作时保留看似不正确的值?

        int a = 0;
        int b = 5;
        a = b++;
        b = b++;            
        Console.WriteLine("For b = b++; b=" + b.ToString()); // b should be 7 but it's 6
        a = 0;
        b = 5;
        a = b--;
        b = b--;            
        Console.WriteLine("For b = b--; b=" + b.ToString()); // b should be 3 but it's 4
        a = 0;
        b = 5;
        a = b + 1;
        b = b + 1;            
        Console.WriteLine("For b = b++; b=" + b.ToString());

输出

          b=6
          b=4
          b=6

谁能解释一下 C# 中的这种行为及其工作原理吗?

最佳答案

这确实是后缀运算符的行为,详细信息 here .

例如,当你写:

b = b++;

发生以下情况:

  1. 保存b的当前值,
  2. b 递增,
  3. b 的保存值由后缀 ++ 运算符生成,
  4. 运算符产生的值分配给b

因此,b确实会被赋予其原始值,而增加的值会丢失。

关于c#-4.0 - 为什么这个整数不增加两次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19634718/

相关文章:

c# - 让 datetime.now 返回到最近的秒数

c# - 速记不为空 C#

java - 编译器首先执行哪个方法?

c++ - 实现 C++ 后缀增量运算符

c - 为什么异或 c 中的字符串给我垃圾值?

.net - 间歇性 XmlSerializer(部分)空文件

matlab - 在 3D 空间中,如何检测一个点是否在圆锥体内部?

sql-server - 创建临时表并同时存储执行命令的结果

c - 这是 C 中未定义的行为吗?

c++ - iter++->empty() 是一个合法的表达式吗?