用户注册 登录
珍珠湾全球网 返回首页

岳东晓 -- 珍珠湾全球网 ... http://ydx.zzwave.com [收藏] [复制] [分享] [RSS] 岳东晓 -- 珍珠湾全球网

日志

科普:左值与右值(计算机)

热度 1已有 5395 次阅读2013-10-5 10:20 |个人分类:科普|系统分类:教育| 计算机

我在《科普:初中微积分入门(系列之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;
}
///////////////////////////////////////////////////////////////


路过

鸡蛋

鲜花

支持

雷人

难过

搞笑
 

发表评论 评论 (2 个评论)

回复 岳东晓 2013-10-5 12:16
iMan: 呵呵,

1)是我不懂X 是啥意思,还是指出你把函数和自变量混为一谈啦?
岳博士,如果你能在古今中外的微积分教科书找出一例 像你这么写的,limx→4x=4,就算你 ...
我如果写[ix]lim_{x\to4} (ax+b) = 4a+b[/ix],你估计不会嚷嚷,为什么[ix]lim_{x\to4} x = 4[/ix]你就不明白了呢?书上可能没有,但你死读书也不至于到这个程度吧?难道工农兵学员学数学靠一不怕苦、二不怕死背书?

C语言的 x=x 是什么意思?你学过编程的,不会自己去查?

我的科普往往是需要读者动点脑筋的。
回复 岳东晓 2013-10-5 12:59
iMan: 如果你这么写limx→4(ax+b)=4a+b,当然就不会让人怀疑你是否分得清自变量和函数了。尽管如此,这个例子很给力。算了挽救了自己。本人不再追究这个问题。

C语言 ...
    我估计你当年学高数像背毛主席语录似的背。唉。工农兵学员确实白白侵占了大学名额啊。

facelist

您需要登录后才可以评论 登录 | 用户注册

Archiver|手机版|珍珠湾全球网

GMT+8, 2024-4-28 00:46 , Processed in 0.031470 second(s), 9 queries , Apc On.

Powered by Discuz! X2.5

回顶部