Java和C语言中自增自减问题

发布时间:2024-06-01 11:14 发布:上海旅游网

问题描述:

int x=3;int y=17
int a=x+y*x++;
a的值是多少
在C语言中 这个值是53
但是在.net和Java中 值确是54
按我的分析 先算y*x=51,然后x自减1等于2;
再算x+51即2+51等于53的
不明白为什么Java里面不是这个结果
但是我把上面的式子稍微做小小的改动 结果又不一样了
int x=3;int y=17;
int a=y*x++ +x;
此次运行之后 C语言和Java中a的值都一样
都是53了 按照数学常理 交换两个加数的位置
值不应该发生变化 但是这里变了 只能说明X的值发生了变化
但就是不明白为什么 希望大家能帮帮我
谢谢大家了
sorry 代码写错了 应该是a=x+y*x--
按一楼的理解就是说Java是先从左到右依次附上值
x在后面的自减中虽然减了1,但是前面的x是已经赋值了的
所以影响不到整个结果 ,而a=y*x--+x此处的是说先算了y*x的值
然后x--,x的值成了2 然后再算就成了53了 也就是说Java赋值的机理和C还是不同的
谢谢你 分给你了

问题解答:

你这有错误吧?前面说y*x++,后面说x自减1……
你的问题我明白,原因给你解释一下。
Java的x+y*x++:取x、y值,计算y*x,加x,存到a,x++;
C的x+y*x++:取x、y值,计算y*x,x++,加x,存到a。
所以结果不同。
而y*x+++x次序二者相同,当然结果一样了。

54没错啊,不同的语言规则都不一样有什么好比较的!只是碰巧写法一样而已

在中国杀人了要死刑,你到加拿大去,人家没有死刑,
同样的杀人,在不同的国家处理不一样,也就是规则不一样

这里是一个道理,同样的语句,java和c的规则不一样,没有可比性

还有个问题17x3=51
结果怎么会有53的出现。。 你是加加啊!

热点新闻