首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

快来看 一个奇怪的有关问题++i与i++的区别

2013-02-19 
快来看 一个奇怪的问题++i与i++的区别本帖最后由 n530956064 于 2013-02-04 17:01:21 编辑class Program{s

快来看 一个奇怪的问题++i与i++的区别
本帖最后由 n530956064 于 2013-02-04 17:01:21 编辑



  class Program
    {
        static void Main(string[] args)
        {
            for (int x = 1; x <= 10; ++x)
            {
                Console.WriteLine(x);
            }
        }
    }

  class Program
    {
        static void Main(string[] args)
        {
            for (int x = 1; x <= 10; x++)
            {
                Console.WriteLine(x);
            }
        }
    }



这俩运算的结果:? 基础
[解决办法]
你自己不会调试啊,前置先加后运算,后置先运行再加
[解决办法]
1-11
[解决办法]
结果应该是一样的,不知道有什么可奇怪的,反倒是我觉得你发这个帖子挺奇怪的。
[解决办法]
你这循环代码,结果是一样的

下面这两句会不一样
int a=++x;
int a=x++;


[解决办法]
楼主是想问下面这两个吧
下面这两个输出结果确实不同

  class Program
    {
        static void Main(string[] args)
        {
            for (int x = 1; ++x <= 10;)
            {
                Console.WriteLine(x);
            }
        }
    }

  class Program
    {
        static void Main(string[] args)
        {
            for (int x = 1; x++ <= 10; )
            {
                Console.WriteLine(x);
            }
        }
    }


------解决方案--------------------


循环里一个分号就是一句代码
单独一句代码 ++x;和x++;都等价于x=x+1;
[解决办法]
在for循环中,单步调试可以看到,先是执行赋值语句x=1,然后判断是否超出范围,x<=10。
如果没有超出范围,则执行 Console.WriteLine(x);语句。
最后执行x++或者++x,所以,在for循环中这两个代码是一样的。
牛哥结贴吧快来看 一个奇怪的有关问题++i与i++的区别
[解决办法]
你要想体现不同,用下面的代码:


        public static void Test1()
        {
            for (int x = 1, j = 1; x <= 10; ++x)
            { Console.WriteLine(j++); } 
        }

        public static void Test2()
        {
            for (int x = 1, j = 1; x <= 10; ++x)
            { Console.WriteLine(++j); }
        }

其实说简单点:j++ 就是先对外提供j(此处是给WriteLine做参数),再执行++运算;
              ++j 就先执行++运算,再对外提供j。
[解决办法]
  class Program
    {
        static void Main(string[] args)
        {
            for (int x = 1; x <= 10; )
            {
                Console.WriteLine(++x);
            }
        }
    }
 
  class Program
    {
        static void Main(string[] args)
        {
            for (int x = 1; x <= 10; )
            {
                Console.WriteLine(x++);
            }
        }
    }


这结果就不同了。。。。
一样是因为x的计算是在执行之后才自加的。
[解决办法]
引用:
引用:你自己不会调试啊,前置先加后运算,后置先运行再加

就是这里奇怪了“先加后运算” 不是从2开始吗 
我知道调试结果 
但是不理解结果


楼主要搞清for循环是怎么运算的啊

1.循环变量赋值
2.判断循环条件是否成立
3.执行循环体
4.计算循环变量

热点排行