java 和c的两个不同结果?????????

[复制链接]
查看11 | 回复2 | 2006-9-6 21:14:23 | 显示全部楼层 |阅读模式
第一个程序
class Ma{
int i=3;
int k;
public void print(){
k=(i++)+(i++)+(i++);
System.out.println("k="+k);
System.out.println("i="+i);
}
public static void main(String[] args){
Ma class1=new Ma();
class1.print();
}
}
结果是
k=12
i=6
第二个程序
class Ma{
int i=3;
int k;
public void print(){
k=(++i)+(++i)+(++i);
System.out.println("k="+k);
System.out.println("i="+i);
}
public static void main(String[] args){
Ma class1=new Ma();
class1.print();
}
}
结果是
k=15
i=6
谁能告诉我java编译器是如何进行运算的,我在C下编译完全是两个不同的答案
第一个程序结果是
k=9
i=6
第二个结果是
k=18
i=6
回复

使用道具 举报

千问 | 2006-9-6 21:14:23 | 显示全部楼层
C本身对于这些东西的要求不是很严格,所以你换一个compiler得出的结果很可能会不一样。但是java language specification对于C中的这些模棱两可的地方都作了明确的规定。两个程序结果不一样没什么可奇怪的。
回复

使用道具 举报

千问 | 2006-9-6 21:14:23 | 显示全部楼层
"编译器最终拥有解释权"!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行