2016-04-09 9 views
0

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?

+8

'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? –

+2

'a = -b' ist etwas anderes als' a - = b'. Diskutieren Sie nicht, dass sie dasselbe tun sollten? – usr2564301

+1

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. –

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