注册 登录
编程论坛 JAVA论坛

很基础的题,但我想不通

不落夕阳 发布于 2016-12-02 10:11, 2620 次点击

public class Test {
    public static void main(String args[]){
        int x=2,t=0;
        t=(x++)/3;
        System.out.println(t);
    }
}
为什么执行结果为0,我一直认为等于1,想不通啊!
7 回复
#2
kk_112016-12-02 17:23
运算后一个浮点型,一个整型,不匹配啊,所以还是原来的初始化值啊 ,空间存储的值传递啊!
#3
kaosaier2016-12-02 20:40
回复 2楼 kk_11
同意
#4
JavaJack2016-12-02 22:27
(x++)/3是先执行x/3的操作,就相当于先执行2/3,/操作取结果的整数部分,所以是0,这些操作完成之后才会将+1的值赋值给x
你如果将x++换成++x,就是先将+1的值赋给x(此时x),再进行3/3操作,此时在运行,结果为1
#5
不落夕阳2016-12-02 23:28
回复 4楼 JavaJack
哦,懂了
#6
纵横阳仔2016-12-06 11:40
你可以将x++换成++x再试一试
#7
cuqa2016-12-07 22:10
是0没错啊,x++,先把x的值带进表达式运行,运行结束后再对x自增。++x会先自增,再带进表达式
#8
袁东东2016-12-08 11:02
4楼正解,++X表示X先进行++运算,得到的结果再去除以3,X++表示先运算后进行++,就是先拿出来除以3最后再自增
1