上代码:java版public class Test { public static void main(String[] args) { int c = 1;
int d = (c++) + (c++) + (c++) + (c++) + (c++); // 1+2+3+4+5=15
int k = 1;
int m = (++k) + (++k) + (++k) + (++k) + (++k); // 2+3+4+5+6=20 System.out.println("c="+c);
System.out.println("d="+d);
System.out.println("k="+k);
System.out.println("m="+m);
}}结果:c=6
d=15
k=6
m=20c版:
#include <stdio.h>void main(){ int c=1;
int d=(c++)+(c++)+(c++)+(c++)+(c++); //1*5=5 printf("c=%d,d=%d\n",c,d);
int k=1;
int m=(++k)+(++k)+(++k)+(++k)+(++k);  //3*2+4+5+6=21 printf("k=%d,m=%d\n",k,m);}结果:
c=6,d=5
k=6,m=21
Press any key to continue
哦?看见了吧,后面的结果我都注释了结果的得来式子

解决方案 »

  1.   

    java和c的运算机制还不同,我靠 我该信谁啊?
      

  2.   

    不同的编译器结果还不一样呢,比如同样是c,
    turbo c++,visual c++和c++ builder还可能不一样呢
      

  3.   

    嗯,验证了,确实不一样。
    实际项目就别这样写吧。
    多几行就行了。
    我用cygwin编译的时候,出现了大量的警告:
    ..\main.c:5:35: warning: operation on 'c' may be undefined
    ..\main.c:5:35: warning: operation on 'c' may be undefined
    ..\main.c:5:35: warning: operation on 'c' may be undefined
    ..\main.c:5:35: warning: operation on 'c' may be undefined
    ..\main.c:8:34: warning: operation on 'k' may be undefined
    ..\main.c:8:34: warning: operation on 'k' may be undefined
    ..\main.c:8:34: warning: operation on 'k' may be undefined
    ..\main.c:8:34: warning: operation on 'k' may be undefined
      

  4.   

    我的想法是:两种语言都是按照前缀先加后用,后缀先用后加
    但是又有不同:
    java好像是一步一步的在做运算:
    如:
     int m = (++k) + (++k) + (++k) + (++k) + (++k); // 2+3+4+5+6=20应该遵循先加后用吧,第一个括号是2,第二个括号里的(++k)是3,但是他是得到一个新值加一个,依次类推就得上面的式子。而c里面:
    int m=(++k)+(++k)+(++k)+(++k)+(++k);  //3*2+4+5+6=21第一个括号是2,第二个括号是3,到了第二个括号,前面的结果是3*2 就是说先累加到3再乘以个数,很符合先加后用吧,后面第三个开始就是想java那样一个一个加,得到一个数加一个。刚刚学编程,很多东西都迷糊,有什么理解不对的望指正,也希望这个帖子能引起大家一点注意,仅此而已。
      

  5.   

    其实很好玩的啊?你们说什么没意义? 那什么算有意义? 你们就为了工程活着?不理解哈,,,希望以后楼主在贴些这方面的,,我也比较喜欢哈。。如果楼主也是 推荐  Java 解惑
      

  6.   

    昨天跟老大学了一个词,叫步进,恰到好处的解释了它.而c中是输出而后自增,而且是step完后.同理,这也解释了a=a+b-(b=a);为什么c++中无法实现交换
      

  7.   

    而且有一点我是这么觉得的(说得可能不对,我没学过java,要错了见谅哈),应该是d=5+4+3+2+1;因此我觉得这是标准就这么定义的,而不是如ls所说的编译器的问题.至于结论对不对,抽空问下老大再说