什么是左值? [英] What is lvalue?
问题描述
在K& R中,他们说:
对象是一个命名的存储区域;左值是表达式
是指一个对象。
C ++中的这些概念怎么样?
`C ++编程语言''也有类似的解释,但是,
可能过于简短。
有人能给我更详细的解释吗?或者给一些推荐
关于它?
谢谢。
-
Hongzheng Wang
Hongzheng Wang写道:在K& R,他们说:
对象是一个命名的存储区域;一个左值是一个表达式
引用一个对象。
这些概念在C ++中怎么样?
C ++编程语言有一个类似的解释,但是,它是/>可能过于简短。
任何人都可以给我一个更详细的解释吗?或者给出一些推荐
关于它?
这最近在NG中有所涉及。
" lvalue" ;是左手边值的缩写。 (作业)。
非左值表达式的例子:
(3 + 3)//你不能分配3 + 3!
(" str")//不能指定字符串
这些是左值 :
int var;
var = 3 + 3; // var是一个左值
*((char *)& var)=" str" [2]; // *((char *)& var)
int& varref = var;
varref = 1 [" str"]; // varref也是左值
int& func(){return var; }
func()= 2; // func返回一个引用(左值)
" Gianni Mariani" < GI ******* @ mariani.ws> skrev i meddelandet
news:br ******** @ dispatch.concentric.net ...
非左值表达式的例子:
(3 + 3)//你不能指定3 + 3!
(" str")//不能指定字符串
C ++中的
,字符串文字是l值。
解释l值是可以在
''='''的右侧在C ++中不是一个很好的解释。有许多l值的例子
无法分配给r值和可分配给的值:
const int i = 5;
i = 2; //错误L值''我'不可修改
struct C
{
C& operator =(int);
};
C()= 5; //确定分配给r值C();
-
Dag Henriksson
< blockquote>
Hongzheng Wang < WA ****** @ mails.tsinghua.edu.cn>在消息中写道
news:br ********** @ news.yaako.com ...
在K& R中,他们说:
对象是一个命名的存储区域;一个左值是一个表达式
引用一个对象。
这些概念在C ++中怎么样?
C ++编程语言有一个类似的解释,但是,它是/>可能过于简短。
任何人都可以给我一个更详细的解释吗?或者给出一些推荐
关于它?
谢谢。
从comp.std.c读取这个帖子++ -
http://makeashorterlink.com/?H23F161C6
HTH,
J.Schafer
In K&R, they said:
An object is a named region of storage; an lvalue is an expression
refer to an object.
How about these concept in C++?
`The C++ Programming Language'' has a similar explanation, however, it
may be too brief.
Can anyone give me a more detailed explanation? Or give some referrences
about it?
Thank you.
--
Hongzheng Wang
Hongzheng Wang wrote:In K&R, they said:
An object is a named region of storage; an lvalue is an expression
refer to an object.
How about these concept in C++?
`The C++ Programming Language'' has a similar explanation, however, it
may be too brief.
Can anyone give me a more detailed explanation? Or give some referrences
about it?
This was covered in the NG recently.
"lvalue" is short for "left hand side value" (of an assignment).
examples of non-lvalue expressions:
( 3 + 3 ) // you can''t assign 3 + 3 !
( "str" ) // string can''t be assigned either
These are "lvalues" :
int var;
var = 3 + 3; // var is an lvalue
* ( ( char * ) & var ) = "str"[2]; // * ((char *)&var) too
int & varref = var;
varref = 1["str"]; // varref is also an lvalue
int & func() { return var; }
func() = 2; // func returns a reference (lvalue)
"Gianni Mariani" <gi*******@mariani.ws> skrev i meddelandet
news:br********@dispatch.concentric.net...
examples of non-lvalue expressions:
( 3 + 3 ) // you can''t assign 3 + 3 !
( "str" ) // string can''t be assigned either
in C++, string literals are l-values.
The explanation "l-values are something that can be at the right side of an
''=''" is not a good explanation in C++. There are many examples of l-values
that cannot be assigned to and r-values that can be assigned to:
const int i = 5;
i = 2; // error. L-value ''i'' not modifiable
struct C
{
C& operator=(int);
};
C() = 5; // OK to assign to r-value C();
--
Dag Henriksson
"Hongzheng Wang" <wa******@mails.tsinghua.edu.cn> wrote in message
news:br**********@news.yaako.com...In K&R, they said:
An object is a named region of storage; an lvalue is an expression
refer to an object.
How about these concept in C++?
`The C++ Programming Language'' has a similar explanation, however, it
may be too brief.
Can anyone give me a more detailed explanation? Or give some referrences
about it?
Thank you.
Read this thread from comp.std.c++-
http://makeashorterlink.com/?H23F161C6
HTH,
J.Schafer
这篇关于什么是左值?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!