A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 也许_还不懂 中级黑马   /  2014-11-12 20:10  /  2177 人查看  /  29 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

若x=2,则表达式(x++)/3的值是?  
我用Java运行了一下结果是0
代码是class Demo {        public static void main(String[] args) {
                int x = 2;
                x++;  {
                        System.out.println(x);
                }
        }
}

  我认为结果不应该是1么,x++  X不就应该等于3了么  3/3=1啊

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1

查看全部评分

29 个回复

倒序浏览
应该X++是先使用X的值,然后再自加一下。所以应该为0(2/3)+1=1;
回复 使用道具 举报
李春江 发表于 2014-11-12 20:21
应该X++是先使用X的值,然后再自加一下。所以应该为0(2/3)+1=1;

输出我打错了  重新发一遍
回复 使用道具 举报
若x=2,则表达式(x++)/3的值是?  
我用Java运行了一下结果是0
代码是class Demo {        public static void main(String[] args) {
                int x = 2;
                x++;  {
                        System.out.println((x++)/3);
                }
        }
}

输出的结果是0    为什么啊
回复 使用道具 举报
我觉得应该这么理解!
i++ 的做用是 把 i参与的表达式用i 的原始值进行运算后  进行 i + 1
也就是説 你的算法可以这么写
int i = 2;
2/3 = 0
i=i+1;

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1

查看全部评分

回复 使用道具 举报
class Demo {
        public static void main(String[] args) {
                 int x = 2;
                 x++;
                {
                         System.out.println((x++)/3);
                 }
         }
}
这个运算  你确定结果是0?
回复 使用道具 举报
柳超 发表于 2014-11-12 20:48
class Demo {
        public static void main(String[] args) {
                 int x = 2;

开始我也不认为是0  后来在网上有人说是0  自己就运行了一下 是0啊   不明白了
回复 使用道具 举报
柳超 中级黑马 2014-11-12 20:55:54
8#
  1. class  Bug
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 int i = 2;
  6.                 i++;
  7.                 {
  8.                 System.out.println(i/3);
  9.                 }
  10.         }
  11. }
复制代码

这样写结果是1如果你不信 !我可以给你上图
回复 使用道具 举报
本帖最后由 李春江 于 2014-11-12 21:03 编辑
也许_还不懂 发表于 2014-11-12 20:27
若x=2,则表达式(x++)/3的值是?  
我用Java运行了一下结果是0
代码是class Demo {        public static ...

楼主你不是在逗我吧,你看好了
1.int x=2;
2.x++;相当于x=x+1;此时x的值位3;
3.(x++)/3=3/3=1;但是x的值为4,因为(x++)的作用是先使用后自加缘故。
综合:结果为1;不可能为0;已通过编译测试,确实为1.
回复 使用道具 举报
李春江 发表于 2014-11-12 21:01
楼主你不是在逗我吧,你看好了
1.int x=2;
2.x++;相当于x=x+1;此时x的值位3;

class Demo {
        public static void main(String[] args) {
                int x = 2; {
                        System.out.println((x++)/3);
                }
        }
}
这道题 只有问题  代码是我自己写的   这是我写的  结果是0  
回复 使用道具 举报
柳超 发表于 2014-11-12 20:55
这样写结果是1如果你不信 !我可以给你上图

class Demo {
        public static void main(String[] args) {
                int x = 2; {
                        System.out.println((x++)/3);
                }
        }
}
这道题 只有问题  代码是我自己写的   这是我写的  结果是0  
回复 使用道具 举报
柳超 发表于 2014-11-12 20:55
这样写结果是1如果你不信 !我可以给你上图

问题是      若x=2,则表达式(x++)/3的值是?
回复 使用道具 举报
李春江 发表于 2014-11-12 21:01
楼主你不是在逗我吧,你看好了
1.int x=2;
2.x++;相当于x=x+1;此时x的值位3;

问题是  若x=2,则表达式(x++)/3的值是?
回复 使用道具 举报
柳超 中级黑马 2014-11-12 21:34:27
14#
也许_还不懂 发表于 2014-11-12 21:20
问题是  若x=2,则表达式(x++)/3的值是?

先执行表达式! 然后 x 加1
也就是説      除3 的结果是 0       后   x + 1
回复 使用道具 举报
李春江 发表于 2014-11-12 20:21
应该X++是先使用X的值,然后再自加一下。所以应该为0(2/3)+1=1;

Sorry 我问题没说明白  耽误时间了  
回复 使用道具 举报
柳超 发表于 2014-11-12 20:55
这样写结果是1如果你不信 !我可以给你上图

Sorry 我问题没说明白  耽误时间了
回复 使用道具 举报
表达能力有待提高,还有帖子可以编辑的
回复 使用道具 举报
本帖最后由 200米王朝 于 2014-11-13 17:27 编辑

(x++) / 3

先运算2/3,X再自增1.



楼主代码写错了吧, 按楼主你的代码 X=2, X++
那打印的结果 X=3

回复 使用道具 举报
本帖最后由 javaAndroid 于 2014-11-13 20:36 编辑

先加与后加的问题
(x++)/3意思是,先用x进行操作之后再自增1
也就是说这句话相当于执行x/3之后,x=x+1
如果写为(++x)/3,答案就是1了。但x++单独作为一个语句的话
和++x作为一个单独语句的话
二者结果是没区别的
但是int x=2;x++;
然后再执行(x++)/3,结果就为1了。执行完这句x的值为4.
回复 使用道具 举报
也许_还不懂 发表于 2014-11-12 21:17
class Demo {
        public static void main(String[] args) {
                int x = 2; {

这个必须是0 啊
x=2;
(x++)/3;先使用x的值;即2/3=0;但是如果你打印X的值就是3 了,因为已经使用过了,x会自动+1的
注意:希望楼主不要再问这个问题了,如果真不懂,你应该好好补习计算机常识了:L
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马