c#中自增与自减运算怎么理解?

using System;

namespace OperatorsAppl
{
class Program
{
static void Main(string[] args)
{
int a = 21;
int b = 10;
int c;

        c = a + b;
        Console.WriteLine("Line 1 - c 的值是 {0}", c);
        c = a - b;
        Console.WriteLine("Line 2 - c 的值是 {0}", c);
        c = a * b;
        Console.WriteLine("Line 3 - c 的值是 {0}", c);
        c = a / b;
        Console.WriteLine("Line 4 - c 的值是 {0}", c);
        c = a % b;
        Console.WriteLine("Line 5 - c 的值是 {0}", c);
        c = a++;
        Console.WriteLine("Line 6 - c 的值是 {0}", c);
        c = a--;
        Console.WriteLine("Line 7 - c 的值是 {0}", c);
        Console.ReadLine();
    }
}

}

运行结果为:
Line 1 - c 的值是 31
Line 2 - c 的值是 11
Line 3 - c 的值是 210
Line 4 - c 的值是 2
Line 5 - c 的值是 1
Line 6 - c 的值是 21
Line 7 - c 的值是 22

为什么:line6-c的值是21而不是22
line7-c的值是22而不是20

a++和a--是先赋值后运算。++a和--a是先运算后赋值。后面那几行相当于

         c = a;//c=21
                a=a+1;//a=22
        Console.WriteLine("Line 6 - c 的值是 {0}", c);//输出21
        c = a//c=22,因为a=22
                a=a-1;//a=21
        Console.WriteLine("Line 7 - c 的值是 {0}", c);//输出22

自减-- 自增++的理解使用,跟语言无关
这个你跟踪一下就理解了

 Line 1 - c 的值是: 31   a的值:21  b的值:10
Line 2 - c 的值是: 11   a的值:21  b的值:10
Line 3 - c 的值是: 210   a的值:21  b的值:10
Line 4 - c 的值是: 2   a的值:21  b的值:10
Line 5 - c 的值是: 1   a的值:21  b的值:10
Line 6 - c 的值是: 21   a的值:22  b的值:10
Line 7 - c 的值是: 22   a的值:21  b的值:10

以上是加上同步输出 a b值
在第五步结束可知, a = 21;(后两步与 b 无关就不说了)
执行下面第六步时,a ++;++在后面,先执行语句在自增一;
c= a;a = a+1;
所以 c :21 a :22

 c = a++;
        Console.WriteLine("Line 6 - c 的值是 {0}", c);

第六步结果 c: 22 a: 21 b: 10
执行第七步
同样,-- 在后面,先执行赋值,在自减;
c= a; a= a-1;
所以 c: 22 a : 21

 c = a--;
        Console.WriteLine("Line 7 - c 的值是 {0}", c);

理解不变,a++ 与++a 都是a = a+1;
只不过前者是在所在语句执行之后执行;
后者在语句中,先执行自增。

如楼上,如果把a++改成++a。就会输出你要的22