第一段代码中,连续赋值表达式 x[i] = i = 3
会先计算右边的赋值表达式 i = 3
,将值3赋给变量i。然后,左边的赋值表达式 x[i] = i
会先计算 x[i]
。由于i此时为3,所以这将变成 x[3]
,将值3赋给数组x的第4个元素。因此,最终结果为 [1, 2, 3, 3, 5]
。
在第二段代码中,连续赋值表达式 i = x[i] = 3
仍然是从右向左执行。首先,表达式 x[i] = 3
中的 x[i]
会计算为 x[0]
。由于x是 [1, 2, 3, 4, 5]
,所以这将得到 x[0]
的值1。然后,将值3赋给变量i。因此,最终结果为 [3, 2, 3, 4, 5]
。
参考答案:
这是一个比较常见的现象。测试工程师在没有找到缺陷前会绞尽脑汁的思考,但是找到一个后,会接
二连三的发现很多缺陷,颇有个人成就感。其中的原因主要如下:
-代码复用、拷贝代码导致程序员容易犯相同的错误。类的继承导致所有的子类会包含基类的错误,反复
拷贝同一代码意味可能也复制了缺陷。
-程序员比较劳累是可以导致某些连续编写的功能缺陷较多。程序员加班是一种司空见惯的现象,因此体
力不只时容易编写一些缺陷较多的程序。而这些连续潜伏缺陷恰恰时测试工程师大显身手的地方。
“缺陷一个连着一个”不是一个客观规律,只是一个常见的现象。如果软件编写的比较好,这种现象
就不常见了。测试人员只要严肃认真的测试程序就可以了。