关于c,c++,和java的一个问题

x=3,y=4
1。int n=(x++)+(++y)+(x++); java等于12,c中等于11
2。int n=(x++)+(++y)+(++x);java等于13,c中等于12
3。int n=(x++)+(++x)+(++y);java等于13,c中等于13
c++中没有实验,求大神解答c和java会有这种差距另外c中1式和三式结果为啥不同

7个回答

这个问题 确实比较纠结啊 1和3 不同很简单 因为c里面 ++x 和x++是不一样的

u014236804
张亚军 说错了应该是二和三
接近 3 年之前 回复

问题补充一下刚才打字比较仓促语法错误太多
x=3,y=4
一,int n=(x++)+(++y)+(x++); java等于12,c中等于11
二,int n=(x++)+(++y)+(++x);java等于13,c中等于12
三,int n=(x++)+(++x)+(++y);java等于13,c中等于13
c++中没有实验,结果应该和c相同吧
求大神解答:
一,c和java为啥会有这种差距
二,c中二式和三式结果为啥不同

脑残的问题,这是C语言未定义行为。语言没规定,各个编译器,甚至同一个编译器不同编译参数都可以造成不同结果。

首先是Java.
你的1.2.3式中,都可以简化看成是int n = a + b + c;
a=x++; b=++y;之类的。
也就是Java中令人纠结的n = i++和n=++i的问题
前者其实可以看成这样一组函数:
int n {
//这里可以明显看到,i的值在还没加1的情况下就已经返回了,所以java中n = i++ 是先赋值,再增长。
return i;
temp = i + 1;
i = temp;
}
后者则是先加,再赋值,其实就一个执行顺序的差别
int n{
temp = i + 1;
i = temp;
return i;
}
综上,也就可以解释java中三个式子最后的结果问题了。
对于C而言,很久没用了,记不起这啥情况了

这是我百度来的,这种代码没什么实际意义,会玩的人一看就知道是新手。
编译器和解释器不同,你的这行代码输出可能是不一样的。标准C/C++语言不推荐写这样的语句,自己玩玩就好,如果是做正规的项目就不要用这种危险的代码了。

关于这个问题,在C语言方面,可以推荐一篇文章,有利于拓展。http://blog.sina.com.cn/s/blog_46ee9c320100w0jd.html

我感觉是这样的

第一个:

java n=3+5+4=12
C n=3+5+3=11

第二个

java n=3+5+5=13
C n=3+5+4=12

第三个

java n=4+4+5=13
C n=4+4+5=12

不对,勿喷啊

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!