1
0xef 2014-07-15 13:25:33 +08:00
|
3
sujin190 OP @0xef
C:\Users\su>php --version PHP 5.4.16 (cli) (built: Jun 6 2013 17:02:22) C:\Users\su>php -r "$a=2;$b=&$a;echo (++$a)+($a++);" 7 C:\Users\su>php -r "$a=2;$b=$a;echo (++$a)+($a++);" 6 这有是怎么回事呢?有点不合常理嘛 |
4
lizheming 2014-07-15 13:30:26 +08:00
|
5
zakokun 2014-07-15 13:39:52 +08:00 1
纠结这种问题的人都....算了不说了
|
6
0xef 2014-07-15 13:49:25 +08:00 1
我猜测是之前有个Bug
在内部处理的时候,当一个变量有两个或者更多ref count的时候,一个表达式里的(++$a)会被立即返回,而不是存储到一个新的临时变量里以完成最终的表达式计算 |
7
churchmice 2014-07-15 14:41:00 +08:00 3
我只能说谭浩强的书看多了吧,能写出这种代码的我非打他一顿
|
8
dndx 2014-07-15 14:45:32 +08:00 1
没事找事,好好的代码不写非写这种蛋疼代码。
|
9
66450146 2014-07-15 14:51:48 +08:00 1
敢把这样的代码传到我的 repo 里面的我非得揍他一顿
一个表达式里面多次存取一个变量的行为本来就是无法预期的。把产品建立在无法预期的东西的基础上,你猜老板会怎么想? |
10
jyhmijack 2014-07-15 14:54:51 +08:00
|
11
lygmqkl 2014-07-15 14:59:58 +08:00
代码写成这样我只想说,zuo的节奏,没必要。在大公司会被警告的。
|
12
lincanbin 2014-07-15 15:09:45 +08:00 1
http://zh.wikipedia.org/wiki/%E6%9C%AA%E5%AE%9A%E4%B9%89%E8%A1%8C%E4%B8%BA
未定义行为在任何语言中都应该避免,不止是C。 哪怕PHP的解释器只有官方那一种,也不能这样做,会被队友打死的。 |
15
zaishanfeng2014 2014-07-15 16:21:58 +08:00
最恨面试出这种题目的sb公司,遇到这样的躲得越远越好
|
17
sujin190 OP |
18
usedname 2014-07-15 21:17:38 +08:00
这样有意义么?有使用价值么?真的看到就烦
|