Hallo zusammen!
Bei mir tritt dieser Fehler auf Error lvalue required as left operand of
assignment.
ich weiß einfach nicht wo der Fehler liegt.
hier der ausschnitt aus dem Programm
1
#include<avr/io.h>
2
#include<avr/interrupt.h>
3
#include<stdio.h>
4
#include"lcd.h"
5
#define F_CPU 3686400UL
6
#include<util/delay.h>
7
8
intAddi(int,int);// funktionen definieren
9
intSub(int,int);
10
intMulti(int,int);
11
intDivi(int,int);
12
13
intAddi(intz1,intz2)// funktionen
14
{
15
intsum;
16
z1+z2=sum;// bei all diesen rechnungen tritt der Fehler auf
Daniel L. schrieb:> z1 + z2 = sum; // bei all diesen rechnungen tritt der Fehler auf
Diese Zeile macht keinen Sinn. Da steht: Berechne die Summe z1+z2 und
speichere sie in einem temporären Speicher. Überschreibe die Summe mit
dem Inhalt von "sum". Vergesse den temporären Speicher wieder. Im
Endeffekt bewirkt das also gar nichts. Daher mag der Compiler das nicht.
Bitte erst ein C Buch lesen.
Dummchen schrieb:> Wozu gibt es eigentlich Debugger!
Dein Name ist anscheinend Programm. Was soll ein Debugger bringen, wenn
der Quelltext sich nicht übersetzten lässt?!?
> Mit Sicherheit in einer Körperöffnung.
Ne, beim Gehäusebau an meiner kleinen Ständerbohrmaschine.
Außerdem habe ich ein Ohr am Wahlergebnis und ein Auge auf den
Wahlverlierer FDP, warüber ich mich besonders freue. Ein guter Tag
heute!
:)
Daniel L. schrieb:> lvalue required as left operand of> assignment.Daniel L. schrieb:> Bei mir tritt dieser Fehler auf Error lvalue required as left operand of> assignment.
manchmal reicht es auch einfach aus, mal den Text auf deutsch zu
übersetzten.
Links-Wert benötigt als linker Operand einer Zuweisung.
Nimm mal folgendes Zuweisungs-Beispiel:
Merkel = 'doof'
dieses ist eine Zuweisung. Der Variable "Merkel" wird der Wert "doof"
zugewiesen.
Die Zuweisung besteht aus einem Links-Operanden (der Variable Merkel),
einem rechts-Operanden (dem Wert "doof"), und einem Operator (dem ")
Aber warum nicht
'doof' = Merkel ?
Nun, das ist halt so in C vorgegeben, daß links das steht, was
irgendeine Eigenschaft annehmen soll.
Zwischen-Hinweis: Wir reden hier nicht über Typen-Validierung. Man
könnte ja durchaus auch
Merkel = 'toll'
zugewiesen werden, aber das könnte ja möglicherweise zu einem
Wertebereichs-Konflikt führen, da die Variable Merkel diese
Werteausprägung nicht annehmen kann. Auch sowas mag der Compiler prüfen,
aber das war ja nicht das was er angemackert hat.
um nun zu deiner Stolper-Zeile zu kommen:
> z1 + z2 = sum; // bei all diesen rechnungen tritt der Fehler auf
rechts (als R-Value) steht SUM. Also wird dem links vom "=" dasjenige
zugewiesen werden, was rechts steht (der Wert der Variable sum)
aber was steht links? Antwort: Die Summe zweier Variablen, die durchaus
für sich Werte enthalten können. Allerdings wird das Ergebnis von z1+z2
nur temporär vorgehalten, und nach der Berchnung wieder weggeworfen.
Da ist eigentlich das was der Compiler anmeckert: Er beklagt, daß er
einer temporären Variablen einen Wert zuweisen soll, die nach der
Zuweisung wieder weggeworfen wird. er hätte aber lieber etwas lang
lebigeres als eine temporäre Variable.
Christopher B. schrieb:> return(quo,Rest);> Ich schätze das wird nicht das machen was du dir dabei erhoffst
Ist aber schon cool, dass der Compiler das akzeptiert.
Mit dem Komma-Operator kann man schon lustige Sachen machen, z.B:
return 3,1415;
Und jeder wundert sich, dass der Satellit abstürzt.
PittyJ schrieb:> Mit dem Komma-Operator kann man schon lustige Sachen machen, z.B:> return 3,1415;> Und jeder wundert sich, dass der Satellit abstürzt.
Der 'Kommaoperator' ist leider auch nicht die stärkste Seite von 'C'.
Man hätte in for-Schleifen Blöcke zulassen sollen, und den Kommaoperator
abschaffen.