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

牛哥_ 2013-02-04 05:00:06


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);
}
}
}



这俩运算的结果:?
...全文
454 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
leavesberlin 2013-02-05
  • 打赏
  • 举报
回复
楼主还是应该找本正规的书看一下运算符优先级的部分吧~
xiejin90314 2013-02-05
  • 打赏
  • 举报
回复
csdn每天都能看见++i和i++这样问题的帖子,伤不起啊。。。还有String和Stringbuffer的帖子。。
xiaolll028 2013-02-05
  • 打赏
  • 举报
回复
引用 16 楼 ThinkRicher 的回复:
引用 7 楼 n530956064 的回复:引用 1 楼 bdmh 的回复:你自己不会调试啊,前置先加后运算,后置先运行再加 就是这里奇怪了“先加后运算” 不是从2开始吗 我知道调试结果 但是不理解结果 楼主要搞清for循环是怎么运算的啊 1.循环变量赋值 2.判断循环条件是否成立 3.执行循环体 4.计算循环变量
对的,楼主先了解下循环体怎么走的吧
空格键 2013-02-04
  • 打赏
  • 举报
回复
引用 7 楼 n530956064 的回复:
引用 1 楼 bdmh 的回复:你自己不会调试啊,前置先加后运算,后置先运行再加 就是这里奇怪了“先加后运算” 不是从2开始吗 我知道调试结果 但是不理解结果
楼主要搞清for循环是怎么运算的啊 1.循环变量赋值 2.判断循环条件是否成立 3.执行循环体 4.计算循环变量
牛哥_ 2013-02-04
  • 打赏
  • 举报
回复
引用 8 楼 gxingmin 的回复:
楼主是想问下面这两个吧 下面这两个输出结果确实不同 C# code?123456789101112131415161718192021 class Program { static void Main(string[] args) { for (int x = 1; ++x <= 10;) ……
知道了
  • 打赏
  • 举报
回复
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的计算是在执行之后才自加的。
catchdream 2013-02-04
  • 打赏
  • 举报
回复
你要想体现不同,用下面的代码:

        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。
风一样的大叔 2013-02-04
  • 打赏
  • 举报
回复
在for循环中,单步调试可以看到,先是执行赋值语句x=1,然后判断是否超出范围,x<=10。 如果没有超出范围,则执行 Console.WriteLine(x);语句。 最后执行x++或者++x,所以,在for循环中这两个代码是一样的。 牛哥结贴吧
gxingmin 2013-02-04
  • 打赏
  • 举报
回复
循环里一个分号就是一句代码 单独一句代码 ++x;和x++;都等价于x=x+1;
牛哥_ 2013-02-04
  • 打赏
  • 举报
回复
引用 5 楼 gxingmin 的回复:
你这循环代码,结果是一样的 下面这两句会不一样 int a=++x; int a=x++;
为什么在循环中结果会一样呢?
gxingmin 2013-02-04
  • 打赏
  • 举报
回复
引用 7 楼 n530956064 的回复:
引用 1 楼 bdmh 的回复:你自己不会调试啊,前置先加后运算,后置先运行再加 就是这里奇怪了“先加后运算” 不是从2开始吗 我知道调试结果 但是不理解结果
int x=1;怎么从2开始了?你这不是都从1开始的吗?
gxingmin 2013-02-04
  • 打赏
  • 举报
回复
楼主是想问下面这两个吧 下面这两个输出结果确实不同

  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);
            }
        }
    }

牛哥_ 2013-02-04
  • 打赏
  • 举报
回复
引用 1 楼 bdmh 的回复:
你自己不会调试啊,前置先加后运算,后置先运行再加
就是这里奇怪了“先加后运算” 不是从2开始吗 我知道调试结果 但是不理解结果
qxyywy 2013-02-04
  • 打赏
  • 举报
回复
引用 1 楼 bdmh 的回复:
你自己不会调试啊,前置先加后运算,后置先运行再加
P哥看到这帖子 估计又是一顿训
gxingmin 2013-02-04
  • 打赏
  • 举报
回复
你这循环代码,结果是一样的 下面这两句会不一样 int a=++x; int a=x++;
牛哥_ 2013-02-04
  • 打赏
  • 举报
回复
cheng2005 2013-02-04
  • 打赏
  • 举报
回复
结果应该是一样的,不知道有什么可奇怪的,反倒是我觉得你发这个帖子挺奇怪的。
  • 打赏
  • 举报
回复
1-11
bdmh 2013-02-04
  • 打赏
  • 举报
回复
你自己不会调试啊,前置先加后运算,后置先运行再加

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧