我在《科普:初中微积分入门(系列之2)》写下了一个数学式子:
[tx]\lim_{x\to 4} x = 4[/tx]
结果有人不解问这里有两个x,啥意思? 有时候读者问题太蠢,还真不好怎么解释。这个[ix]\lim[/ix]符号有其特定含义,下面与左边的两个x其实是指不同的东西,也许我写成[ix]\lim_{x\to 4} (x +0)[/ix]就不会出现这个问题了。
所以学习符号性的东西跟学小学算术不一样,对于符号来说有时候位置很重要。一定要学会区分位置对于符号含义的影响。
举例说明。C语言语法里有一条:
考虑如下 C 代码 (假设x是一个原始类型的变量)
x = x;
虽然两边都是x,但是两个x却截然不同,一个在左边,我们称为左值(l-value),另一个在右边,称为右值 (r-value)。
所以,你可以写这样的代码
++x = x++;
但你却不能反过来, 写
x++ = ++x;
因为 x++是一个右值,只能放在右边。
作为程序员们复习左右值概念的练习,请解答下面C++代码输出的结果是什么
/////////////////////////////////////////////////////////
#include <iostream>
using namespace std;
int y=0, cnt=0;
int& x() {
cout << "y=" <<y<< endl;
return cnt++ < 5? ++x(): --y;
}
int main()
{
++x() = x()--;
cout << "y=" <<y<< endl;
return 0;
}
///////////////////////////////////////////////////////////////