易截截图软件、单文件、免安装、纯绿色、仅160KB

C/C++中左值和右值的差别

我们常说的左值lvalue和右值rvalue并不简单地意味着左右区别,它的原始定义如下:
Definition:
C and C++ have the notion of lvalues and rvalues associated with
variables and constants. The rvalue is the data value of the variable,
that is, what information it contains. The "r" in rvalue can be thought of as "read"
value
. A variable also has an associated lvalue. The "l" in lvalue can be though of as location
,
meaning that a variable has a location that data or information can be
put into. This is contrasted with a constant. A constant has some data
value, that is an rvalue. But, it cannot be written to. It does not
have an lvalue.
Another view of these terms is that objects with an rvalue, namely a
variable or a constant can appear on the right hand side of a
statement. They have some data value that can be manipulated. Only
objects with an lvalue, such as variable, can appear on the left hand
side of a statement. An object must be addressable to store a value.
Here are two examples.
int x;
x = 5; // This is fine, 5 is an rvalue, x can be an lvalue.
5 = x; // This is illegal. A literal constant such as 5 is not
      // addressable. It cannot be a lvalue.

引文中说: "The "r" in rvalue can be thought of as "read" value."
就是你可以把 "r" 理解为 "read". 并没有说就是 "read" 的意思!
lvalue, rvalue称为"左值", "右值" 并没有违背原意. 因为,
到目前为止, 所有计算机语言都是将被赋值量置于赋值号左端的, 因此这种称谓和理解非常直观的. 对于赋值量来说, 也是相同的道理.
之所以有"location"和"read"的说法, 是因为在C/C++中, 有很多表达式是表达可赋值单元的,
我们不能简单地理解"lvalue"就是变量. 如: a[i], *p, *(a->p+1), 等等. 这些都是C/C++的表达式,
不是变量, 故用"location"的含义可以避免很多误解. 请看下面的例子:
  const int x;
  x = 1;   // 这里 x 是 rvalue! 所以, 这是错误的赋值


相关文档:

Linux下常用C语言字符串操作函数

stroul,
strdup
snprintf()
atio
 
C中常用字符串操作函数
#include <string.h>
 
size_t strlen(const char *s)   测量字符串长度s的实际长度。
例如s[20]="abc",那么strlen(s)的结果是3,而不是20.这就是实际长度
 
char *strcat(const char *s1, const *s2)  ......

CentOS5 no acceptable C compiler found in $PATH

CentOs5安装apache的时候
#./configure
(于检查系统是否有编译时所需的库,以及库的版本是否满足编译的需要等安装所需要的系统信息。为随后的编译工作做准备。)
提示错误如下:(没有GCC编译器环境)
checking build system type... i686-pc-linux-gnu
checking host system type.. ......

C连接PostgreSQL示例

参看www.pgsqldb.org网站上的文档/客户端编程  
  需要链接libpq库,应包含头文件include/libpq-fe.h  
  路径要看你具体将postgresql安装在哪里啦  
  给你一个具体例子吧(从www.pgsqldb.org上copy的)!!!  
   
   
&nb ......

error:cannot get C/H/S values

windows7 + ubuntu9.10双启动,这个有太多的帖子了,不过这次的情况比较复杂.
先装的WIN7,后装UBUNTU,没有任何问题.GRUB双启动.
后来因为一个情况,要装XP,把WIN7做了 ghost.装完XP,GRUB当然没有了,于是用ubuntu启动盘修复.
虽然启动菜单出来了,但只能进行ubuntu,进入windows的时候就提示error:cannot get C/H/S value ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号