构建高质量的C#代码
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

代码 2-7:++运算(<PlusPlusDemo>\Program.cs)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace PlusPlusDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            //后++运算
            int i = 10;
            Console.WriteLine(">>>>后++运算");
            Console.WriteLine("表达式的值:{0}", i++);
            Console.WriteLine("计算后i的值:{0}", i);
            Console.WriteLine();
            //前++运算
            i = 10;
            Console.WriteLine(">>>>前++运算");
            Console.WriteLine("表达式的值:{0}", ++i);
            Console.WriteLine("计算后i的值:{0}", i);
        }
    }
}

代码运算的结果如图2-3所示。

图2-3

其中,我们可以看到,后++运算时,表达式先返回i的值(10),然后再进行i=i+1的运算,完成后i的值就是11。

在进行前++运算的时候,表达式会先进行i=i+1的计算,这时表达式和i的值都为11。

如果我们只需要使用计算后i的值,则两种方式的结果是一样的,但如果需要使用表达式的值时,就需要区别前++和后++的运算方式的差异了。

前--和后--的运算与++运算原理是一样的,只不过是做减1的工作,而不是加1,这里就不再详细介绍了。

2.2.4 移位运算

移位运算包括“<<”和“>>”两种,其格式如下:

exp1>>exp2;

exp1<<exp2;

exp1可以是int、uint、long或ulong类型的数据,而exp2必须是一个int类型的数据。其中:

● >>运算符,将exp1的二进制形式向右移动exp2指定的位数,如果exp1是int或long类型,高位将保留符号,其他位的数据向右移动,移出的位数据将被丢弃,移过的空位将设置为0。如果exp1是uint或ulong类型,则将exp1的二进制形式整体向右移动exp2指定的位数,移出的位数据将被丢弃,移过的空位将设置为0。

● <<运算符,将exp1的二进制形式向左移动exp2指定的位数,移出的位数据将被丢弃,移过的空位设置为0。

代码2-8给出了这两种运算符的使用示例。