我辅导一名高中生,我的CS语言技能需要帮助。
你如何解释这个java代码?
Int k;
For (k=0; k < nums.length; k++) {
nums [k] -= sign (nums [k]);
nums [k] += sign (nums [k]);
}
在说明中它说int [] nums= {-2,-1,0,1,2}
。它还说
int sign(int x)
如果为正则返回1,如果为负则返回-1,如果x为0,则返回0。
我想我需要了解代码中发生了什么&#34; - &#34;和&#34; =&#34;彼此相邻。而且当&#34; +&#34;和&#34; =&#34;彼此相邻。
答案 0 :(得分:0)
复合赋值操作
nums [k] -= sign (nums [k]);
nums [k] += sign (nums [k]);
与
相同nums [k] = nums [k] - sign (nums [k]);
nums [k] = nums [k] + sign (nums [k]);
答案 1 :(得分:0)
循环中的第一个操作,
nums [k] -= sign (nums [k]);
将从正数中减去1并将1加到负数。实际上,将数字“更近”移动到零。 (或将其绝对值减少1)
循环中的第二个操作
nums [k] += sign (nums [k]);
将1添加到正数并从负数中减去1,将其绝对值增加1。
所以,随便看一眼,代码除了浪费CPU周期外什么都不做。 :-)
但是,有一些细微之处。