我刚刚阅读了关于前缀增量运算符的C引用,并意识到前缀增量运算符的结果不是左值,但令人惊讶的是它在C++中是左值.之后我读了这个答案,解释了为什么它是一个左值,但我不明白它:
(第3行):["]看起来它是这样你可以取其地址或分配给参考.[."]
以下是一个例子:
Run Code Online (Sandbox Code Playgroud)int i; extern void f (int* p); f (&++i); /* Would be illegal C, but C programmers havent missed this feature */ ...
那么允许这个有什么好处呢?i在全球范围内增加的唯一目的是非法的吗?如果这是我认为这可以解决C中缺陷(无法/难以解决)的唯一原因,或者为了可读性而应该重写程序,对吧?
顺便说一句我不明白为什么左值也被称为"定位器值",我读过这个 - 第4行,但定位器对我来说很模糊.什么是定位器,它是指针吗?
编辑:为了您宝贵的时间阅读关于wth是定位器值,这是我自制的backronym:
如果出了什么问题,不要怪我.
在C++中,++赋予左值的前缀实际上非常自然.
因为C++有运算符重载.对于可能复杂类型的大多数迭代器,前缀++返回迭代器本身的左值.
因此,对于通用编程,将基本类型作为特殊情况是不方便的.
例如;
auto &iter = ++old_iter;
Run Code Online (Sandbox Code Playgroud)
如果指针的前缀增量给出一个右值,则不起作用.
| 归档时间: |
|
| 查看次数: |
207 次 |
| 最近记录: |