黑马程序员技术交流社区

标题: 自加自减练习 [打印本页]

作者: yangxin540    时间: 2013-8-13 13:35
标题: 自加自减练习
本帖最后由 yangxin540 于 2013-8-14 00:35 编辑
  1. int a = 2;

  2.          int b = a + 3 * a++;//b = 8
  3.          int c = a + 3 * ++a;//c = 15

  4.          int d = (a++) + 3 * a;//d = 19
  5.          int e = ++a + 3 * a;//e = 24
  6.          
  7.          int f = ++a - 3*a;//f = -14
  8.          
  9.          int g = a-- + 3*a;//g = 25
  10.          int h = a-- + 3*a--;//h = 21
  11.          int i = a-- + 3*--a;//i = 10
复制代码
这些输出的结果让我很是费解呀,求解释!
作者: べPNヤ    时间: 2013-8-13 13:56
             楼上应该是连续运行的
             int b = a + 3 * a++;//b = 8                  b = 2+3*2     =8         此时内存中 a=3

04.         int c = a + 3 * ++a;//c = 15                 c= 3+3*4      =15                         a=4

05.

06.         int d = (a++) + 3 * a;//d = 19              d=4+ 3*5     =19               a++之后a=5      此时 a=5


作者: べPNヤ    时间: 2013-8-13 14:06
还是写完吧
              int e = ++a + 3 * a;//e = 24
                  e= 6 +3*6                 a=6

09.         int f = ++a - 3*a;//f = -14
                 f= 7-3*7              a=7
10.         

11.         int g = a-- + 3*a;//g = 25
                  g=7+3*6              a=6
12.         int h = a-- + 3*a--;//h = 21
                  h= 6+3*5             a=4
13.         int i = a-- + 3*--a;//i = 10
                   i=4+ 3*2             a=2
作者: yangxin540    时间: 2013-8-13 14:59
べPNヤ 发表于 2013-8-13 14:06
还是写完吧
              int e = ++a + 3 * a;//e = 24
                  e= 6 +3*6                 a= ...

恩,明白了,原来是这样的:D
作者: yangxin540    时间: 2013-8-13 15:00
邪恶飞猫 发表于 2013-8-13 14:41
首先要明确,i++和++i是有区别的。i++是先运算后自增,++i是先自增后运算,而且++的运算优先级很高,比+和= ...

恩,明白了,连续的运行,a的值也在改变
作者: 以防万一    时间: 2013-8-13 22:30
亲,如问题已解决请将分类的未解决改为已解决。

以后的问题贴也要及时更改分类哦~


保持队形,谢谢合作
作者: yangxin540    时间: 2013-8-14 00:35
杨璐敏 发表于 2013-8-13 22:30
亲,如问题已解决请将分类的未解决改为已解决。

以后的问题贴也要及时更改分类哦~

呵呵,好的




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2