zoukankan      html  css  js  c++  java
  • 加加减减(你真的懂++--吗) C#

     

     

    目录

    自增量. 1

    ++放在右边. 1

    ++放在左边. 1

    --在左边. 1

    --在右边. 1

    ++或者-- 放在左边和放在右边对表达式的值影响. 1

    示例11

    示例21

    示例31

    你真的明白了吗?. 1

    测试11

    测试21

    测试31

    测试41

    答案. 1

    测试11

    测试21

    测试31

    测试41

     

     

     

     

     

    自增量

    ++a; 自加

    --a; 自减1

    自增量的作用是将变量的值加上1

     

    下面的2个示例演示了  变量++对变量值的影响。

    int number = 10;

    number++;

    Console.WriteLine(number); //number = 11

     

     

    int number = 10;

    ++number;

    Console.WriteLine(number); //number = 11

     

     

     

     

    下面演示变量++后对表达式值的影响

     

    ++放在右边

     number++ 放在表达式中则表示先使用number这个值,然后再把number的值+1

     

    result的值是 10 +11还是10 + 10呢?

    //放在后面++

    int number = 10;

    int result = 10 + number++;

     

    Console.WriteLine(number);//11

    Console.WriteLine(result);//10+10=20

     

    上面的代码相当于这样

    //

    // int result = 10 + number++;相当于

    // int result = 10 + number;

    // number++;

     

     

    ++放在左边

     

    //++放在左边

    int number = 10;

    int result = 10 + ++number;

     

    Console.WriteLine(number);//11

    Console.WriteLine(result);//10 + 11 =21

     

     

    //

    // int result = 10 + ++number;相当于

    // ++number;

    //  int result = 10 + number;

     

     

    减减同上

    --在左边

     

     

    //后置--

    int number = 10;

    number--;//9

    --number;//8      8-1

     

    int result = 10 + --number;//10+7

     

    Console.WriteLine(number);//10-3 =

    Console.WriteLine(result);//17

    Console.ReadKey();

    number的值

    这里的number不论-—放在它的左边还是右边,结果都是将number的值自身减去1,这里出现了3--,所以number的值 = 10 -3 = 7

     

     

    result的值

    在计算到--number时,number已经自身减去2(number = 8),而--是放在number的左边的,使用之前要减1,所以结果为result = 10 + 7 =17

     

     

     

     

     

    --在右边

     

    number的值

    这里的number不论--放在它的左边还是右边,结果都是将number的值自身减去1,这里出现了3--,所以number的值 = 10 -3 = 7

     

    result的值

    result在使用number之前number的值已经改变了,(减了21),现在的number值为8。表达式中的number--由于是后置—-所以这个number的值不变依然是上面的8

    所以result = 10 + 8 =18

    //--放在左面

    int number = 10;

    number--;

    --number;

    int result = 10 + number--;

     

    Console.WriteLine(number);//10-3 =

    Console.WriteLine(result);//10+8 =

    Console.ReadKey();

     

     

     

    ++或者-- 放在左边和放在右边对表达式的值影响

     

     

     

    ++-- 一个是自增1、一个是自减1,原理一样这里只解释++对表达式的影响。

     

    在表达式中(var=1):

    <![if !supportLists]>1.  <![endif]>++放在左边的(y=++var),会立即对当前的变量值 +1。这里的var就等于2

    <![if !supportLists]>2.  <![endif]>++放在右边的面的(y=var++),不会对当前值有影响(即此处var=1)但如果后面 仍然有var变量时,则会对后面的var+1

    示例1

     

    int x = 9;

    int a = x++ + 11;

     

    x =

    在变量a中,x++出现一次,x自加1,此时x=109+1得来的)

     

    a =

    a这个变量中,它的值是个表达式,x++出现了一次,它是后置的,所以它改变不了当前x的值(但能改变它后面的值,然而后面没有x变量),x =9

    结果 a = 9 + 11 = 20

     

     

     

    示例2

     

    int x = 9;

    int b = ++x + 11;

     

    x =

    在变量a中,x++出现一次,不论++、右++结果都是对x的值+1,此时x=109+1得来的)

     

    a =

    在变量b值表达式中,++x是在左边的所以,x值会自增1并立即改变,此处的x = 10 (9+1得来的)

    结果b = 10 + 11 = 21

     

     

    示例3

     

    int x = 9;

    int c = x++ + 11 + x++;

     

    x =

       以变量c的表达式中,x++出现了2次,所以x自加12次,

    x = 9 + 1 + 1 = 11

     

    c =

    这要和示例1对比

    示例1中的a = x++ + 11; 表达式中只有一个x++和一个11

    x++不是加在自己身上的,而是加在别人身上的,示例1中的a后面没有x了,而本例是有x,所以第一个x++自加后的值会变成后面的x++的值。

     

    结果 c = 9 + 11 + 10 = 30

     

    其实c的值和c = x++ + 11 + x;是一样的

     

     

     

    放在一起

    int x = 9;

    int a = x++ + 11;

    int b = ++x + 11;

    int c = x++ + 11 + x++;

     

     

    x =

     代码从上至下执行,x自加1 出现了4次,所以 x=9+4=13

     

    a =

     x++是右置的,所此值不变 a = 9+11 = 20

     

    b =

     注意在算b的值前,先搞清楚此时的x的值是多少,是9呢还是10呢,很明显是10,应为a中的x已经自+1了一次,并且b中的++是在左边所以此处的x1110+1得到的),所以b的值 b = 11 + 11 = 22

     

    c =

    b的求值一样,在算到x++之前,x的值已经自增了2次这时x=11

    再来算c中的表达式x++ + 11 + x++ = 11 + 11 + 12 = 34

     

     

     

     

     

     

    你真的明白了吗?

    如果你真的会,会对下面的测试非常感到自信,并且跃跃欲试,那么下面就来测试吧。

    下面有5个测试如果你都做对了说明你真的明白了。

     

     

    我看过很多的关于 ++放在左边和放在右边的区别,但并不完全明白主要有以下3

    <![if !supportLists]>1.  <![endif]>++var先加后用

    <![if !supportLists]>2.  <![endif]>var++ 先用后加

    <![if !supportLists]>3.  <![endif]>不论 ++ ++结果都是对var的自身+1

     

     

    我说不明白是因为当我对很长一段 ++ -- 计算时,结果算出来有时对有时不对。

    这个问题甚少放了几个月了没解决,也许有1年了,昨天又花了6个小时终于搞明白了!

     

     

    测试使用说明

    请事先计算出结果,然后再运行对比结果。最下面有答案。

     

     

    你真的能区分 ++ 放在左边和放在右边的区别吗?

    如果你对下面的测试表示无聊、或者反感、或者对下面的测试感觉害怕,这说明你并不明白。有时候你能算对,那么是因为结果是知道答案前提下拼凑出来的

     

     

    测试1

     

    staticvoid Main(string[] args)

    {

        int x = 7;

        int y = ++x + x--;

        Console.WriteLine("x = {0}", x);

        Console.WriteLine("y = {0}", y);

     

        Console.ReadKey();

    }

    x =

    y =

     

     

    测试2

     

    staticvoid Main(string[] args)

    {

        int x = 7;

        int y = ++x + --x;

        Console.WriteLine("x = {0}", x);

        Console.WriteLine("y = {0}", y);

        Console.ReadKey();

    }

    x =

    y =

     

     

    测试3

     

    staticvoid Main(string[] args)

    {

        int x = 5;

        int y = x++ + 11 + x-- + ++x + 3 + x--;

        Console.WriteLine("x = {0}", x);

        Console.WriteLine("y = {0}", y);

        Console.ReadKey();

    }

    x =

    y =

     

     

    测试4

     

    staticvoid Main(string[] args)

    {

        int x = 5;

        int y = (x++) + 3 + (--x) + (++x) + 5;

     

        Console.WriteLine("x = {0}", x);

        Console.WriteLine("y = {0}", y);

                                      

        Console.ReadKey();

    }

    x =

    y =

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    答案

    如果你对我给出的结果表示怀疑可以自已在vs中测试

    测试1

    x=7

    y=8+8 =16

     

     

    测试2

    x=7

    y=8+7=15          

    测试3

    x = 5

    y = 5+ 11 + 6+   6 + 3 + 6=37

    测试4

    tmp_x =6

    x=6

    y=5+3+5+6+5=24

     

     

     

     

     

    代码调试专用

            staticvoid Main(string[] args)

            {

                int x = 5;

                int y = (x++) + 3 + (--x) + (++x) + 5;

                //tmp_x =6

                //x=6

                //y=5+3+5+6+5=24

                Console.WriteLine("x = {0}", x);

                Console.WriteLine("y = {0}", y);

     

                Console.ReadKey();

         }

     

     





  • 相关阅读:
    前端日期格式化
    前端显示省略号
    模糊搜索和时间区间搜索
    数字保持小数点后一位
    每天一个linux命令(tcpreplay)
    每天一个linux命令(find)
    每天一个linux命令(netstat)
    每天一个linux命令(lsof)
    每天一个linux命令(tcpdump)
    每天一个linux命令(route)
  • 原文地址:https://www.cnblogs.com/xe2011/p/5670281.html
Copyright © 2011-2022 走看看