i=3
s=0
求s=(i++)+(++i)+(i++)
最后打印 s,i的值

解决方案 »

  1.   

    i := 6
    s := 11
    你写个C程序不就知道了。
      

  2.   

    程序是
    i := 6;
    s := 13;
    那么我原先s算错了。
      

  3.   

    最近我怎么老回答这问题啊,THQ真是害死人啊~~~如果楼主不太了解汇编的话,那就从高级语言上去理解,明白一点就行了,i++中的自加1运算是在i被使用过后完成的,而不是整个表达式运算完后自加所以...chechy也犯了个错误
      

  4.   

    i = 6
    s = 15如果去掉括号,s = 13
      

  5.   

    在C里面有扩号或没有扩号(加空格)都是12(++的优先级本来就高),java里面倒是得出13这个结果,因为java中的i++是在取了i的值后马上自加
      

  6.   

    各位大哥:
       我是新手你们讲清楚点嘛?可以吗?正确的是6,12   我来分析一哈请指教哈
             s=  (i + + ) + ( + + i )+ (i + + )    {我们教材不是讲到i++是先用i}
                  ↓    ↓     ↓     ↓     ↓    ↓    {在自加吗?++i是先自加才用的
     i的变化值 :i=3     i=4   i=5   i=5    i=5    i=6   {啊???}
                     ↓            ↓            ↓       
     括号中的总值:  3             5             5
    这样看来不是  i=6;s=13  吗?  我还是没懂啊
      

  7.   

    从汇编层次上最好理解,看看INC指令所处的位置,一切都很清楚THQ写的教材很容易使初学者陷入误区,还是当垃圾抛到一边比较好,掌握了一些分析问题的方法后,这些细节自己很容易想清楚的,咬文嚼字的真累
      

  8.   

    因为我是初学者  常常走入一些误区  我们现在学的是《计算机基础》《c语言》 我很想学在前面而且在软件方面发展,你说我下一步最好看什么书啊(具体点)我的朋友建议我看《c++》 我发现你们在讲问题的时候都会提到 《汇编语言》,它难道包含了我们所学的语言的金华吗?比如vb,c,语言
      

  9.   

    不是纯粹的语法问题来的
    应该是编译器进行优化的结果
    (编译器肯定会进行优化,但是可能就不是你所要的结果了)
    看看以下的例子就清楚了
    #include <conio.h>int main(int argc, char* argv[])
    {
        int i, s;

        i = 3;
        s = i++;
        printf ( "i = %d, s= %d\n", i, s );
        s += (++i);
        printf ( "i = %d, s= %d\n", i, s );
        s += i++;
        printf ( "i = %d, s= %d\n\n", i, s );

        i = 3;
        s = (i++)+ (--i);
        printf ( "i = %d, s= %d\n\n", i, s );

        i = 3;
        s = (++i)+ (i++);
        printf ( "i = %d, s= %d\n\n", i, s );

        i = 3;
        s = (i++)+ (--i)+ (i++);
        printf ( "i = %d, s= %d\n\n", i, s );

        i = 3;
        s = (i++)+ (--i)+ (i++)+ (i++);
        printf ( "i = %d, s= %d\n\n", i, s );

        i = 3;
        s = (i++)+ (++i)+ (i++);
        printf ( "i = %d, s= %d\n\n", i, s );

        i = 3;
        s = (i++)+ (++i)+ (i++)+ (i++);
        printf ( "i = %d, s= %d\n\n", i, s );

        i = 3;
        s = (i++)+ (++i)+ (i++)+ (i++)+ (i++);
        printf ( "i = %d, s= %d\n\n", i, s );

        getch();

        return 0;
    }
    结果:
    4 3
    5 8
    6 133 45 84 65 86 127 168 20
      

  10.   

    i := 6;
    s := 13;s:=3+5+5
      

  11.   

    6,
    12,
    没错的,
    VC Dev都是这个结果
      

  12.   

    s=(i++)+(++i)+(++i)倒是能得出13.