问题标签 [lvalue]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
229 浏览

c - C中的左值查询

我对 -l 值和 r 值感到困惑。考虑代码

int x; x=5;

整数 x

内存空间是为 int 变量保留的。然后,将值 5 分配给它。我的问题是

  1. 声明意味着 x 是左值?
  2. 如果 x 在内存中有地址 0xyyyy,&x 指的是这个地址。这个地址 0xyyy 是左值,即 &x 是左值吗?但是, var 的地址是指针,那么,那么,l-value 就变成了指针变量?
0 投票
1 回答
132 浏览

c++ - 为什么创建左值是在 C++ 中返回引用的好处之一?

我正在以下地址阅读一些 C++ 文本:https ://cs.senecac.on.ca/~chris.szalwinski/archives/oop244.071/content/custo_p.html 。在返回参考的部分,作者写道:

" 从函数返回引用有两个内在的好处

  • 效率

  • 创建一个左值

"

我可以理解第一个好处(效率),但不明白为什么是第二个。

正如作者解释的那样,我可以理解什么是lvalue,但我不明白lvalue和从函数返回引用之间的关系是什么,这样lvalue就变成了一个好处?

0 投票
2 回答
250 浏览

c++ - boost::bind 作为左值对象

有没有办法做这样的事情(MS VS 2008)?

我试过

但它不起作用。

0 投票
8 回答
4627 浏览

c - 转换指针不会产生左值。为什么?

在这里发布我最有争议的答案之一后,我敢于提出几个问题,并最终填补了我的知识空白。

为什么这种表达式不被((type_t *) x)认为是有效的左值,假设它x本身是一个指针和一个左值,而不仅仅是一些表达式?

我知道很多人会说“标准不允许这样做”,但从逻辑的角度来看,这似乎是合理的。标准不允许的原因是什么?毕竟,任何两个指针的大小都相同,并且指针类型只是一个编译时抽象,它指示在进行指针运算时应该应用的适当偏移量。

0 投票
4 回答
192 浏览

c - 为什么我不能获取返回值的地址?

我已经将一些代码分成两个文件,它以前可以工作。在一个文件中,我有一个函数,它有一个输出值参数,它是一个指向指针的指针。

我通过调用 getter 来填充此参数并取消引用它:

但是我收到一条错误消息,说“&”需要左值”。我理解这个错误的含义,但我认为我能够做到这一点,因为它是一个指针,因此确实代表了原始的“事物”。

这是否与实际指针内存位置可能会改变这一事实有关,即使它会指向正确的东西?但是为什么它以前在同一个文件中而不是现在可以工作?

提前致谢!

0 投票
4 回答
6884 浏览

c++ - 什么是动态对象类型

我认为动态类型意味着动态分配的对象使用new. 在下面的情况下,你说是p指向动态类型还是静态类型的对象?在标准中,它没有说动态类型是动态对象。

1.3.3 - 由左值表达式表示的左值所指的最派生对象 (1.8) 的类型。[示例:如果静态类型为“指向 B 类的指针”的指针 (8.3.1) p 指向从 B 派生的 D 类对象(第 10 条),则表达式 *p 的动态类型为“D 。” 参考文献(8.3.2)的处理方式类似。]

还有下面的引用是什么意思

右值表达式的动态类型是它的静态类型

0 投票
2 回答
388 浏览

c++ - 什么语言创造了左值这个词?

C 是第一个使用术语lvalue的编程语言,还是可以追溯到更远的地方?请注意,我不是在谈论“赋值语句左侧的某物”的一般概念(很久以前它在 C++ 中已不再是这个意思)。您几乎可以在任何命令式编程语言中找到这一点。我是在特别询问术语lvalue。它从何而来?

0 投票
3 回答
1043 浏览

c - 打印返回结构的成员

我在打印从函数返回的结构成员时遇到问题:

里面的printf调用to_hex_string_打印了正确的结果,但是printf里面的调用使test_hex我的程序崩溃了。为什么会这样?这是一生的问题,还是其他问题?

当我用 替换printf调用时puts(to_hex_string_(12345).a),出现编译器错误:

这里发生了什么?

0 投票
2 回答
112 浏览

c - 如何在 C 中的 malloced 内存区域上存储指向偏移位置的指针?

我正在尝试使用我获得的库制作一个非常简单的哈希表。我尝试创建的行包含 C-string 或 int 作为键。值可以是 4 种不同的类型。如果它是结构,我尝试将指针存储在分配的内存区域中。然而,在我的世界里,这与非指针字段的逻辑不同,我得到:

这是代码

我知道这真的很基本,并且会得到很少的反对票,但除了答案之外,我想解释一下为什么这个带走 * 并不能使它成为指针。

编译器允许:

那为什么不呢:

谢谢和BR-马蒂

0 投票
5 回答
1380 浏览

c++ - 会发生左值到右值的转换吗?

C++ 标准 (4/5) 左值到右值的转换不是在一元 & 运算符的操作数上完成的。

例如:

在上述情况下,都是p&x值吗?或者什么是合适的例子?

编辑:

那这个呢?

我确定此语句中不会有任何转换,但我很困惑 & 运算符如何参与其中?