Я знаю, что присвоения a! = B или a ~ = b и т. Д. Не допускаются в C, хотя допускается a =! B или a = ~ b. Просто любопытно, почему язык был спроектирован так? Любая конкретная техническая причина? В последних компиляторах такая поддержка предоставляется? Такие ограничения C (по крайней мере, я считаю, что это ограничение) делает язык сложным для новичков. Это делает нас наизусть некоторыми из таких особенностей в C.Почему унарные операторы не допускаются в сложных назначениях?
0
A
ответ
0
Определение !=
и ~=
может вызвать ненужную путаницу, поскольку некоторые токены могут быть либо унарным оператором, либо двоичным оператором, определяемым контекстом. Например: Что означает a -= b
, a = a - b
или a = -b
?
В любом случае, они вам не нужны. a = !b
и a = ~b
не вызывают больше ввода, и их довольно легко понять.
Смежные вопросы
- 1. унарные операторы в printf
- 2. Scala - Prefix Унарные операторы
- 3. унарные операторы "++" и "-" странная ситуация
- 4. унарные операторы в Java против C++
- 5. Приоритет оператора и унарные операторы в иронии
- 6. сколько унарные операторы в языке C
- 7. Почему истинные и ложные унарные операторы требуют объявления с парой?
- 8. Infix to Postfix и унарные/двоичные операторы
- 9. Почему% не допускаются
- 10. Проблема с приоритетом и ++ и * унарные операторы в C
- 11. оценка Экспрессия в C++ с участием унарные операторы
- 12. Унарные операторы постфикс и префикс одновременно в java
- 13. Почему параметры 'constexpr' не допускаются?
- 14. Почему абстрактные конструкторы не допускаются?
- 15. Как Scala различает унарные операторы и символы в имени переменной
- 16. Почему структуры не допускаются в определениях шаблонов?
- 17. Почему в сообщениях MassTransit не допускаются структуры?
- 18. Путь строительства или рисования операторы не допускаются внутри текстового объекта
- 19. Kotlin: Что делают унарные операторы плюс/минус по номерам?
- 20. Арифметика в назначениях массивов?
- 21. Perl в назначениях
- 22. Python: исключения в назначениях
- 23. Почему операторы не работают
- 24. Почему «0» угловые скобки не допускаются
- 25. Почему не допускаются статические постоянные поплавки?
- 26. Почему столбцы таблицы стилей не допускаются?
- 27. почему я получаю недействительным типа не допускаются
- 28. Унарные операции в C++
- 29. Перегрузка +/- унарные
- 30. Как унарные операторы работают на C, вы не можете предварительно увеличивать ноль
'a! = B' уже имеет значение - и это не задание. В общем случае 'a @ = b' (для _binary_ operator' @ ') является сокращением для' a = a @ b', за исключением того, что 'a' оценивается только один раз. Это не имеет никакого смысла для унарных операторов. Что бы вы использовали? 'a ~ =' для достижения 'a = ~ a'? –
'a = -b' - это нечто иное, чем' a - = b'. Разве вы не утверждаете, что должны делать то же самое? – usr2564301
Многие унарные операторы либо двойные, как бинарные операторы ('~', '-'), либо уже имеют значение, за которым следует' = '('! = '). Даже если бы это было не так, синтаксис был бы довольно странным. Например, у вас будет 'x op =;' без ничего после него. Ближайшим C это операторы pre и post-increment '++' и '--', которые вообще не используют' = '. –