Co właściwie oznacza komunikat o błędzie "Wymagana wartość L"?Wymagana wartość l
Odpowiedz
lwartością jest coś, co może pojawić się na lewej stronie przypisania, innymi słowy, „coś, co można przypisać”
Więc szukać cesji gdzie lewa strona nie jest „przypisane” na przykład coś tak proste, jak mogłoby to wywołać takiego błędu
if (0 = foo)
{
}
Tutaj mamy próbę przypisania na stałe z powodu przypadkowo używając = zamiast ==
Zobacz również
Oznacza to, że realizacja oczekuje obiektu, ale po prostu przyjął wartość lub funkcję. Dzieje się tak w przypadku przydziałów, które przeszły nie-lwartość lub operacji adresowych stosowanych do niefunkcyjnych.
L-value oznacza "wartość lokalizacji" i oznacza wyrażenie, które odnosi się do obiektu zadeklarowanego jako register
lub do lokalizacji w pamięci. Coś takiego jak 42
jest wartością, która nie pasuje do żadnego z kryteriów. Bardziej formalnie istnieją trzy kategorie:
- L Wartości: Odwołanie do obiektów. Obejmuje to obiekty zadeklarowane jako const. Takie są niemodyfikowalne wartości l.
- Oznaczenia funkcji: w odniesieniu do funkcji.
printf
to nazwa funkcji, ale&printf
nie jest, a*&printf
jest ponownie. - Inne: Czasami nazywane "rwartością" a standardem jest "wartość wyrażenia". Przykładami są
var + 0
(z wartością niezwiązaną z obiektami) lub z wylicznikiem wyliczenia.&printf
należy do tej kategorii.
błąd pojawia się, jeśli kodujesz coś takiego, jak function(parameter) = value;
, ponieważ nie możesz przypisać wartości do niczego, co nie jest dla niej możliwym kontenerem.
Do C99 stan standardowy (6.3.2.1):
lvalue
jest wyrażeniem typu obiektu lub niekompletnym, inne niż pusty; jeśli lvalue
nie wyznacza obiektu podczas jego oceny, zachowanie jest niezdefiniowane. Kiedy mówi się, że obiekt ma określony typ, typ jest określony przez lvalue
używany do oznaczenia obiektu. Modyfikowalny lvalue
to nie ma typu tablicowego, nie ma niekompletnego typu, nie ma typu const-kwalifikowanego, a jeśli jest strukturą lub związkiem, nie ma żadnego członka (w tym rekurencyjnie dowolnego członka lub element wszystkich zawartych agregatów lub związków) o typie stałym.
Nazwa lvalue
pochodzi pierwotnie z wyrażenia przypisania E1 = E2
, w którym lewy argument E1
jest wymagane a (modyfikowalne) lvalue
. Być może lepiej uznać go za reprezentujący obiekt "wartość lokalizatora". To, co jest czasami nazywane rvalue
, jest w niniejszym standardzie międzynarodowym opisanym jako "wartość wyrażenia".
Innymi słowy, lvalue
jest coś, co można znaleźć na potencjalnie zmienia. Zmodyfikowany lvalue
to taki, w którym można zmienić .
Na przykład, oświadczenie C:
x = 7;
jest ważna ponieważ x
jest lvalue
. Z drugiej strony, stwierdzenie:
14 = 7;
nie jest prawidłowy, ponieważ 14
jest nie coś można znaleźć na zadania.
Fragment:
const int x = 7;
faktycznie stwarza obraz lvalue
nazywa x
chociaż nie jesteś wolno go zmienić (to nie jest modyfikowalny `lwartość).
wybieranie nitów, ale technicznie może to być również zmienna zadeklarowana za pomocą 'register', więc może nie mieć adresu. –
"if wartość l nie oznacza obiektu podczas jego oceny, zachowanie jest niezdefiniowane._", chyba że zachowanie jest _nie_ niezdefiniowane: '& * (int *) 0;' (sic) – curiousguy
Najprawdopodobniej oznacza to, że próbowałeś przypisać wartość do czegoś, do czego nie można przypisać. Na przykład obie następujące czynności prawdopodobnie spowodują ten błąd:
5 = 5; myObject-> myMethod() = 5;
- 1. Co to jest nienazwana wartość l?
- 2. Czy wyrażenie "nowa T" określa wartość r lub wartość l?
- 3. Bash opcja shebang -l
- 4. L-wartość zaniku do wartości z błędem automatycznym
- 5. l-wartość określa przedmiot podczas korzystania const std :: map
- 6. Czy iterator kontenera może dać coś innego niż l-wartość?
- 7. Dlaczego moje int? wartość jest sprawdzana tak, jakby była wymagana?
- 8. Albo Wymagana walidacja
- 9. Kiedy przeciążanie przechodzi przez odniesienie (wartość l i wartość r) preferowane do wartości przechodzącej?
- 10. Android L Morfing animacje
- 11. Dlaczego dokładnie jest wymagana wartośćMaxLayoutWidth?
- 12. Wymagana infrastruktura dla TDD?
- 13. Czy wymagana jest synchronizacja?
- 14. jest wymagana HttpContextScoped StructureMaped?
- 15. Czy wymagana jest iteracja w poniższym kodzie?
- 16. Uzyskaj bitmapę z ImageView w Androidzie L
- 17. jest tymczasową wartością l, czy też nie?
- 18. "/ bin/bash -l" Niepoprawna opcja
- 19. .htaccess [L] i [koniec] flags
- 20. Szukaj cronjob z crontab -l
- 21. Dlaczego wymagana jest funkcja NotificationCompat?
- 22. Dlaczego wymagana jest składnia ": nodoc:"?
- 23. Dlaczego wymagana jest kategoria HOME?
- 24. OpenGL: wymagana trwałość tablic wierzchołków
- 25. Wymagana matematyka dla obliczeniowych finansów?
- 26. Wymagana funkcja oznaczania jest niezdefiniowana "
- 27. Mongoose: wymagana ścieżka błędu sprawdzania poprawności
- 28. Praktyczne zastosowanie faktu, że operator przyrostowy prefiksu C++ zwraca wartość l
- 29. Dlaczego wymagana jest wartość ViewState, gdy obiekt żądania zawierałby wszystkie wartości pól?
- 30. Co powoduje, że '' w ['h', 'e', 'l', 'l', 'o', ''], gdy robisz re.findall ('[\ w]?', 'Hello')
możliwy duplikat błędu ["wymagany l-wartość"] (http://stackoverflow.com/questions/1353384/l-value-required-error) –
@Paul to o C++. –