黑马程序员技术交流社区

标题: 运算符计算顺序 [打印本页]

作者: danielzyj    时间: 2014-3-26 11:58
标题: 运算符计算顺序
int n = 7 ;int b =2*n++;  结果:b=14  n=8  

疑问:自增计算顺序不是在*前面吗?为什么结果不是16  8

作者: awkflf11    时间: 2014-3-26 12:05
int n = 7 ;
int b =2*n++;

结果:b=14  n=8  



结果:
因为如果是那样的话,,
你应该这样写的;

int b =2*(n++);

所以的结果:b=14  n=8  

作者: 赵彦丰    时间: 2014-3-26 12:05
int n = 7 ;
int b =2*n++;

b= 2*7++
n++  是说下一轮得运算得时候加上1

如果有循环得话
作者: 宋超2356    时间: 2014-3-26 12:15
这就是n++与++n的区别吧,如果
  1. int n = 7 ;
  2. int b =2*n++;//这里应该是b = 2 * n;  n++;的运算顺序

  3. int n = 7;
  4. int b = 2 * ++n;//name输出一定是b = 16,n = 8
复制代码


n++是先运算后叠加,++n是先叠加1在运算
作者: danielzyj    时间: 2014-3-26 12:22
宋超2356 发表于 2014-3-26 12:15
这就是n++与++n的区别吧,如果

n++是先运算后叠加,++n是先叠加1在运算

哦哦 非常感谢
作者: H-Deka    时间: 2014-3-26 12:23
n++的结果用于下一次的运算
作者: 李东梁    时间: 2014-3-26 12:25
  1. int n = 7 ;
  2. int b =2*n++;
  3. 结果:b=14  n=8  
复制代码

这条程序可以改成
  1. int n = 7
  2. ;int b =2*n;
  3. n++;
  4. 结果:b=14  n=8  

  5. 这样明白了些了吧?
复制代码

作者: Zero霖    时间: 2014-3-26 13:16
n++表示的意思是先使用n的值,再进行自加,拆成两步即b=2*n;n=n+1;而++n的意思是先自加然后再使用n的值,拆成两步即n=n+1;b=2*n。所以这里int b=2*n++相当于int b=2*n;n=n+1;输出的值就是14,8
作者: 阳春烟景    时间: 2014-3-26 13:32
*的算符优先级大于自增(++)的算符优先级,先执行2*7,然后赋值给b,然后n自增1,得到8.。希望对你有用哦。。
作者: 橸瑩膤漃寞林    时间: 2014-3-26 13:49
因为n++是先给左边赋值,再自增,所以int n = 7 ;int b =2*n++; 这里把n为7套进去,先给左边赋值,b=14,完后,n再自增,n=8。如果这样写,int b = 2*++n,那么就是先自增再给左边赋值。




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