shaoguanfa 发表于 2014-12-23 15:53:01

求解 希望来个大神详细解读一下

void main()
{
      int i,sum=0;
      i=1;

loop:   if (i<=100)
         {
        sum=sum+i;
       i++;
                 goto loop;
            }

         printf("%d\n",sum);
}
问题1:i++ ++i区别,详细,越详细越好,最好带几个例子比较一下
问题2:为什么程序运行的时候i++的值会加入到 sum=sum+i后面而不是替换成(sum=sum+i)里面的i,我的意思是为什么是sum=sum+i+(i+1)+(i+1+1)而不是sum=sum+(i+1)。

shaoguanfa 发表于 2014-12-23 15:55:41

感觉好乱好乱,不知道你们看明白了没?再补充一下吧,就是说为什么sum=1+2+3+……而不是直接替换sum=sum+i里面的i

shaoguanfa 发表于 2014-12-23 16:32:23

无语,自己脑袋短路了,见笑了,不过还是希望有人来详细解释一下 i++ 和++i的问题。

标哥 发表于 2014-12-23 16:37:16

简单的来说,++i 和 i++,在单独使用时,就是 i=i+1。
而 a = ++i,相当于 i=i+1; a = i;
而 a = i++,相当于 a = i; i=i+1;

还有,你见过 a+=i++,++i; 吗:lol:
这都是语言的坑,毫无意义的东西,GO语言中,只允许 i++ 单独使用,不允许a = i++ 这样的混合运算

风之残月 发表于 2014-12-25 19:37:12

i++ 是先使用变量i,然后i加一
++i 是先i加一,然后使用i

例子:当int a, i = 1; 时
a = i++; 执行后 a = 1, i = 2
a = ++i; 执行后 a = 2, i = 2;

至于为什么程序运行的时候i++的值会加入到 sum=sum+i后面,因为i++; 在 sum = sum+i; 后面,代码是顺序执行的
页: [1]
查看完整版本: 求解 希望来个大神详细解读一下