黑马程序员技术交流社区

标题: len=(len==1)?++len:--len这行代码是怎么执行的? [打印本页]

作者: 邹学良    时间: 2013-3-2 11:18
标题: len=(len==1)?++len:--len这行代码是怎么执行的?
本帖最后由 易水寒 于 2013-3-2 13:47 编辑

len=(len==1)?++len:--len这行代码是怎么执行的?或者说它到底是在给予一个什么样的条件?

求大神解惑!!
作者: 刘国涛    时间: 2013-3-2 11:24
是这样的,如果len为1就自增,不是就自减,比如如果len=1,代码执行后len=2;如果len=2,代码执行后len=1。
作者: 邹学良    时间: 2013-3-2 11:27
刘国涛 发表于 2013-3-2 11:24
是这样的,如果len为1就自增,不是就自减,比如如果len=1,代码执行后len=2;如果len=2,代码执行后len=1。 ...

那能不能直接(len==1)?
作者: 吴硕    时间: 2013-3-2 11:27
考察的是三元运算符和一元运算符

len = ((len==1) ? ++len : --len)
len如果等于1执行++len然后赋值给len
len如果不等于1,执行--len并赋值给len
作者: 邹学良    时间: 2013-3-2 11:29
易水寒 发表于 2013-3-2 11:27
那能不能直接(len==1)?

而是len=(len==1)?也就是这点没有弄明白
作者: 刘国涛    时间: 2013-3-2 11:29
易水寒 发表于 2013-3-2 11:27
那能不能直接(len==1)?

后面要有表达式
作者: 邹学良    时间: 2013-3-2 11:31
吴硕 发表于 2013-3-2 11:27
考察的是三元运算符和一元运算符

len = ((len==1) ? ++len : --len)

多谢解惑
明白了
作者: 邹学良    时间: 2013-3-2 11:36
吴硕 发表于 2013-3-2 11:27
考察的是三元运算符和一元运算符

len = ((len==1) ? ++len : --len)

我一直都在从左向右推!:L
没去想它的优先级
作者: 克零岚    时间: 2013-3-2 11:42
复制代码
这行代码代码解释如下:
  1. if(1==len){
  2.                           len=++len;
  3.                   }else{
  4.                           len=--len;
  5.                   }
复制代码
len=(len==1)?++len:--len;    //先运算等号=右边的部分(len==1)?++len:--len,之后把得到的值再赋给len


作者: 何伟    时间: 2013-3-2 12:16
len=(len==1)?++len:--len
拆开看len=右边是一个三元运算符    条件表达式(len==1)吗?如果等于len=就等于++len.如果不等于,那么len就等于--len
就是把右边三元运算的结果赋值给len


作者: 克零岚    时间: 2013-3-3 15:38
克零岚 发表于 2013-3-2 11:42
这行代码代码解释如下:len=(len==1)?++len:--len;    //先运算等号=右边的部分(len==1)?++len:--len,之后 ...

呵呵,谢谢昆哥啊,对于努力学习中的我来说,这是莫大的鼓励呢:loveliness:




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