Problem mit operator
-
und "a=b;" ist syntaktisch auch nichts anderes als "a+b;" - also warum zählst du = nicht als binären Operator?
-
CStoll schrieb:
und "a=b;" ist syntaktisch auch nichts anderes als "a+b;" - also warum zählst du = nicht als binären Operator?
weil es schwachsinnig ist! was soll ich mit a + b alleine? mit temporären objekten auf dem stack um mich schmeißen? also zähle ich den op= dazu, bezeichne das konstrukt aber immer noch als binären operator.
und so mache ich es auch beim op= . ich könnte einfach
value;
in den code schreiben. bringt aber nichts, also zähle ich den op= einfach dazu => unärer operator.
-
terraner schrieb:
weil es schwachsinnig ist! was soll ich mit a + b alleine? mit temporären objekten auf dem stack um mich schmeißen?
Darum geht es nicht. Ein unäre Operator hat einen Operanden, ein binärer hat zwei. Ob das semantisch sinnvoll ist, interessiert da nicht, es geht rein um die Syntax. Du kannst eben weder
a=;
noch
=a;
schreiben, weil das syntaktisch falsch ist. = braucht zwei Operanden, einen links und einen rechts. Darum ist = ein binärer Operator, fertig. Welche Semantik dahinter steckt, ist völlig wurscht. Was ist, wenn ich op= so überlade, dass es das gleiche macht wie op+? Wird der Operator dann nach deiner Logik plötzlich binär?
-
MFK schrieb:
Wird der Operator dann nach deiner Logik plötzlich binär?
rein logisch gesehen: ja :p
ich hab jetzt gemerkt, dass ich da syntax und semantik vermischt habe.
-
Und vor allem kannst du den Wert deiner Operation weiterverwenden - wie du das machst, ist dann unerheblich. (ja, "a+b;" alleine macht wenig Sinn (außer du überlädst den op+ so, daß er seine Operanden verändert), aber nimm' z.B. "if(a+b)..." oder "printf("%d",a+b);" wenn du den Operator unbedingt in einem größeren Zusammenhang sehen willst).