PROJET AUTOBLOG


Shaarli - Les discussions de Shaarli

Archivé

Site original : Shaarli - Les discussions de Shaarli

⇐ retour index

Understanding lvalues and rvalues in C and C++ - Eli Bendersky's website

mardi 4 novembre 2014 à 14:01
Links Lounge 04/11/2014
Voilà qui clarifie bien les choses.
La conversion de rvalue en lvalue est assez tordue :


"This doesn't mean that lvalues can't be produced from rvalues by more explicit means. For example, the unary '*' (dereference) operator takes an rvalue argument but produces an lvalue as a result. Consider this valid code:
<code>
int arr[] = {1, 2};
int* p = &arr[0];
*(p + 1) = 10;   // OK: p + 1 is an rvalue, but *(p + 1) is an lvalue
</code>

Conversely, the unary address-of operator '&' takes an lvalue argument and produces an rvalue:
<code>
int var = 10;
int* bad_addr = &(var + 1); // ERROR: lvalue required as unary '&' operand
int* addr = &var;           // OK: var is an lvalue
&var = 40;                  // ERROR: lvalue required as left operand
                           // of assignment
</code>"
(Permalink)