Ich weiß, dass a! = B oder a ~ = b usw. in C keine zusammengesetzten Zuweisungen erlaubt sind, obwohl a =! B oder a = ~ b erlaubt ist. Nur neugierig, warum die Sprache so entworfen wurde? Irgendwelche spezifischen technischen Gründe? In den neuesten Compilern wird solche Unterstützung bereitgestellt? Solche Einschränkungen von C (zumindest fühlte ich, dass es eine Einschränkung ist) macht die Sprache für Anfänger sehr komplex. Dies macht uns einige dieser Merkmale in C aus.Warum unäre Operatoren in zusammengesetzten Zuweisungen nicht zulässig?
0
A
Antwort
0
Definieren !=
und ~=
kann zu unnötiger Verwirrung führen, weil einige Token entweder unärer Operator oder binärer Operator sein können, bestimmt durch den Kontext. Zum Beispiel: Was bedeutet a -= b
, a = a - b
oder a = -b
?
Irgendwie brauchen Sie sie nicht. a = !b
und a = ~b
verursachen keine weitere Eingabe und sind recht einfach zu verstehen.
Verwandte Themen
- 1. Scala - Präfix Unäre Operatoren
- 2. Überlastung +/- unäre Operatoren
- 3. Gemeinsame Praxis für unäre Operatoren
- 4. Unnötige Zuweisungen mit Julia Update Operatoren
- 5. ANTLR: Problem unterscheidet unäre und binäre Operatoren (z. B. Minuszeichen)
- 6. Warum verwendet Go^statt ~ für unäre bitweise - nicht?
- 7. Unäre Negation in C++
- 8. Warum ist dieser Standardvorlagenparameter nicht zulässig?
- 9. Warum führen diese Zuweisungen zu unterschiedlichen Ergebnissen?
- 10. NAs sind in subskribierten Zuweisungen nicht erlaubt
- 11. Warum ist undefiniertes Verhalten in C zulässig?
- 12. Warum ist NULL für DateTime in C# nicht zulässig?
- 13. Warum sind flexible Typen in Datensatztypdefinitionen nicht zulässig?
- 14. Warum sind Funktionsvorlagenspezialisierungen in einer Klasse nicht zulässig?
- 15. Zuweisungen fehlgeschlagen
- 16. Warum sind "und" und "oder" Operatoren in Python nicht?
- 17. Warum können Operatoren in einer statischen Klasse nicht überlastet werden?
- 18. Warum sind Op-Assign-Operatoren in Java nicht sicher?
- 19. Wie kann ich meinen Shunting-Yard-Algorithmus so ändern, dass er unäre Operatoren akzeptiert?
- 20. Sollten die Postfix-Operatoren nicht als binäre Operatoren betrachtet werden
- 21. Eclipse-: Auto-align „=“ in Zuweisungen
- 22. Was bedeuten Zuweisungen in rspec
- 23. Valgrind zeigt keine Zuweisungen
- 24. Warum ist double als Template-Parameter vom Typ nicht zulässig?
- 25. Warum ist UTF-8 nicht als "ANSI" -Codepage zulässig?
- 26. Warum ist ImageSource als WPF-Ressource zulässig?
- 27. Warum ist meine Heuristik für den A * -Algorithmus nicht zulässig?
- 28. Wie und warum ist ObsoleteAttribute für Eigenschaftenaccessoren nicht zulässig?
- 29. mehrere Zuweisungen mit einem Komma in Python
- 30. Kotlin: Warum sind unäre Plus/Minus nicht in der Lage, generischen Typ aus Zuordnung abzuleiten?
'a! = B' hat schon eine Bedeutung - und es ist keine Zuweisung. Im Allgemeinen ist "a @ = b" (für einen _binary_ Operator "@") eine Kurzschrift für "a = a @ b", außer dass "a" nur einmal ausgewertet wird. Es macht keinen Sinn für unäre Operatoren. Was würdest du benutzen? 'a ~ =' um a = ~ a zu erreichen? –
'a = -b' ist etwas anderes als' a - = b'. Diskutieren Sie nicht, dass sie dasselbe tun sollten? – usr2564301
Viele der unären Operatoren verdoppeln sich entweder als binäre Operatoren ('~', '-') oder haben bereits eine Bedeutung, wenn ein' = '('! = ') Folgt. Selbst wenn das nicht der Fall wäre, wäre die Syntax ziemlich seltsam. Zum Beispiel hätten Sie 'x op =;' mit nichts danach. Das nächste C sind die Vor- und Nach-Inkrement-Operatoren '++' und '--', die' '' 'überhaupt nicht verwenden. –