Μια σταθερά, μια μεταβλητή, ένας πίνακας ή ένα μέλος δομής μπορούν όλα να θεωρηθούν lvalues, καθώς πληρούν αυτήν την απαίτηση.
Ακολουθούν μερικά παραδείγματα lvalues στο C:
```γ
πίνακας int[10];
int* pointer_to_array =&array;
int main() {
πίνακας[0] =10; // ο πίνακας[0] είναι μια τιμή l
(*pointer_to_array) =10; // *pointer_to_array είναι επίσης μια τιμή lvalue
επιστροφή 0;
}
```
Ωστόσο, δεν είναι όλες οι εκφράσεις lvalues. Για παράδειγμα, οι κλήσεις συναρτήσεων και οι κυριολεκτικές τιμές δεν θεωρούνται lτιμές.
```γ
συνάρτηση int(int a) {
// Το a δεν είναι τιμή lvalue
επιστρέφει ένα + 10;
}
int main() {
// Το 10 δεν είναι τιμή lvalue
10 + 5;
}
```
Η διάκριση μεταξύ lvalues και rvalues (εκφράσεις που δεν υποδηλώνουν θέση μνήμης) είναι κρίσιμη επειδή μόνο οι lvalues μπορούν να τροποποιηθούν με έναν τελεστή εκχώρησης (=).
Ακολουθεί ένα παράδειγμα για να καταδείξετε τη διαφορά:
```γ
int main() {
// a είναι μια τιμή l
int a =10;
// b είναι μια τιμή r
int b =10 + 5;
a +=5; // Αυτό ισχύει, καθώς το a είναι μια τιμή lvalue
// Αυτό είναι ένα σφάλμα χρόνου μεταγλώττισης, καθώς το b είναι μια τιμή rvalue
b +=5;
}
```
Έτσι, συνοπτικά, μια τιμή l είναι οτιδήποτε αντιστοιχεί σε μια θέση μνήμης και μπορεί να βρίσκεται στην αριστερή πλευρά μιας ανάθεσης (=).
Πνευματικά δικαιώματα © Γνώση Υπολογιστών Όλα τα δικαιώματα κατοχυρωμένα