当前位置:嗨网首页>书籍在线阅读

10-高手点拨

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

5.4 高手点拨

**本节视频教学录像:6分钟**

在5.1节我们对运算符进行了基础讲解,其中一些运算符蕴含着技巧性的用法,在这里进行详细说明。

1.n++与++n

只要学习编程语言,学习运算符,都少不了学习自增、自减运算。++与--这两个运算符特殊的地方主要表现在,它们既可以用做前缀运算符(用在变量前面,如++n),也可以用做后缀运算符(用在变量后面,如n++)。不管作为前缀还是后缀,它作用的变量都会实现自增或者自减运算。

++与--的使用分为以下两种情况。

① 这种情况比较简单,没有歧义,就是纯粹的实现自增。被作用的变量不参与运算。

01  int  n=0;
02  n++;                   //n的值为1
03  ++n;                   //n的值为2

② 被作用的变量参与运算。

有歧义就在这个情况下,++或--作为后缀运算符时,其作用的变量先参与运算,再自增;++或--作为前缀运算符时,其作用的变量先自增或自减,再参与运算。

01  int x=0,y=0;
02  x=y++;                //x的值为0
03  y=0;
04  x=++y;                //x的值为1

当然,++与--也不是非使用不可,为了使程序没有歧义,增加可读性,对于参与运算的变量自增运算,我们可以分两步进行,代码如下。

01  int x=0,y=0;
02  x=y;                 //x的值为0
03  y=y+1;
04  y=0;
05  y=y+1;
06  x=y;

这样就不用再纠结是先自增还是先运算了。

**提示** “+”与“--”运算符只能作用于变量,对于非变量是不适用的,如x=(y+1)++就是非法表达式。

2.用圆括号来保证运算优先

① 算术运算。

计算x与y的和的5倍。

01  int x,y,z;
02  z=(x+y)*5;

这是个比较简单的例子,却很能说明问题。当我们不知道“+”与“*”的优先级时,就可以使用括号来保证“+”的运算。

② 逻辑运算。

当x的值在[1,5]和[10,+∞)区间时,将y赋值为100,否则将y赋值为0。

01  int x=6,y;
02  if(x>=1&&x<=5 || x>=10)//if( (x>=1&&x<=5) || (x>=10))
03  {
04     y=100;
05  }
06  else
07  y=0;

3.使用&运算符实现状态控制

使用&运算符实现状态控制比较常见,它不仅运算速度快,而且非常节省空间,用一个int型就可以存储。这种方式的权限有查看、新增、修改、删除、保存权限,并给予用户查看、修改、保存的权限。以下代码判断该用户有什么权限,没有什么权限,然后输出判断结果。

01  int None = 0;                        //无权限
02  int Scan = 1;                        //查看
03  int New = 2;                         //新增
04  int Modify = 4;                      //修改
05  int Delete = 8;                      //删除
06  int Save = 16;                       //保存
07  int userRight = None;                //默认没有权限
08  userRight = Scan | Modify | Save;    //给用户查看、修改、保存权限
09  //下面开始判断用户的权限
10  if ((userRight & Scan) == Scan)
11  {
12          Console.WriteLine("该用户具有查看权限。");
13  }
14  else
15  {
16          Console.WriteLine("该用户没有查看权限。");
17  }
18  if ((userRight & New) == New)
19  {
20          Console.WriteLine("该用户具有新增权限。");
21  }
22  else
23  {
24          Console.WriteLine("该用户没有新增权限。");
25  }
26  if ((userRight & Modify) == Modify)
27  {
28          Console.WriteLine("该用户具有修改权限。");
29  }
30  else
31  {
32          Console.WriteLine("该用户没有修改权限。");
33  }
34  if ((userRight & Delete) == Delete)
35  {
36          Console.WriteLine("该用户具有删除权限。");
37  }
38  else
39  {
40          Console.WriteLine("该用户没有删除权限。");
41  }
42  if ((userRight & Save) == Save)
43  {
44          Console.WriteLine("该用户具有保存权限。");
45  }
46  else
47  {
48          Console.WriteLine("该用户没有保存权限。");
49  }
50  Console.ReadKey();

【运行结果】

单击工具栏中的 按钮,即可在控制台中输出如下图所示的结果。

104.png 这只是状态控制的简单举例,实际运用中,一般把状态设置为枚举,枚举更容易使用,有兴趣的读者可以自己实现一下。