Возьмем x за переменную.
x++ =x+1
То есть у нас же есть всего два операнда, разве нет? Единица не считается операндом? В документации операции являются унарными, а почему, не ясно.
P. S. Вопрос конечно бесполезный, ведь это лишь теория, но мне чертвоски интересно, почему оперции унарные, а не бинарные.
C#
Почему операции инкремента и декремента - унарные?
Унарная операция - такая, которая применяется к одному операнду. Что конкретно тебя смущает?
Николай Сорокин
если исходить из моего представления, то то что х++ = х+1. То есть почему 1 не может быть операндом?
Инкремент: n = n + 1
Декремент: n = n - 1
Инкремент: n += 1
Декремент: n -= 1
Независимо от того как выглядит запись, конечный результат тот же. В унарном варианте имеется возможность реализации префиксной и постфиксной формы, которые отличаются приоритетом.
Декремент: n = n - 1
Инкремент: n += 1
Декремент: n -= 1
Независимо от того как выглядит запись, конечный результат тот же. В унарном варианте имеется возможность реализации префиксной и постфиксной формы, которые отличаются приоритетом.
есть всего два операнда, разве нет?В контексте операций инкремента, его фиксированное значение операндом не является.
>x++ =x+1
А с чего ты решил, что данное утверждение справедливо и там вообще всегда появляется единица?
В плюсах operator++ перекрывается таким образом, каким это требуется программисту, например, инкремент указателя в числовом значении увеличит его значение не на единицу, а на размер того типа, на который этот указатель указывает, например на 4 для типа int
Операции инкремента и декремента не подразумевают, что переменная является строго числовой и что к ней нужно прибавить единицу, они подразумевают что над переменной нужно выполнить унарную операцию, внезапно, инкремента или декремента соответственно; а то как эти операции реализованы - это внутреннее дело самой реализации.
А с чего ты решил, что данное утверждение справедливо и там вообще всегда появляется единица?
В плюсах operator++ перекрывается таким образом, каким это требуется программисту, например, инкремент указателя в числовом значении увеличит его значение не на единицу, а на размер того типа, на который этот указатель указывает, например на 4 для типа int
Операции инкремента и декремента не подразумевают, что переменная является строго числовой и что к ней нужно прибавить единицу, они подразумевают что над переменной нужно выполнить унарную операцию, внезапно, инкремента или декремента соответственно; а то как эти операции реализованы - это внутреннее дело самой реализации.
Вадим ...
Все-таки, ++ всегда увеличивает на 1. То, что увеличение указателя на 1, в свою очередь, на самом деле приводит к увеличению на размер типа, это следующий разговор. Так что для указателей тоже справедливо ++ptr == ptr+1
А с чего ты решил, что данное утверждение справедливо и там вообще всегда появляется единица?
В плюсах operator++ перекрывается таким образом, каким это требуется программисту, например, инкремент указателя в числовом значении увеличит его значение не на единицу, а на размер того типа, на который этот указатель указывает, например на 4 для типа int
Все-таки, ++ всегда увеличивает на 1. То, что увеличение указателя на 1, в свою очередь, на самом деле приводит к увеличению на размер типа, это следующий разговор. Так что для указателей тоже справедливо ++ptr == ptr+1
Возможно смысл в том, что для бинарных операций нужно больше обращений к регистрам, а единица нигде не хранится, на которую производится инкремент или декремент.
Николай Сорокин
Кстати, да, возможно поэтому)
Операция инкремента - унарная. Операция "прибавить" (что-либо к чему либо) - бинарная. В частных случаях, как например, в твоем, они могут быть по смыслу одинаковыми. Но все равно, по определению, "++" - унарная операция, а "+" - бинарная. Просто по количеству операндов.
Классический унарный минус точно так можно переписать в виде бинарной операции - как умножение на (-1). Это ничего не меняет, унарный минус продолжает оставаться унарной операцией, пусть ее и можно переписать в виде бинарной.
Классический унарный минус точно так можно переписать в виде бинарной операции - как умножение на (-1). Это ничего не меняет, унарный минус продолжает оставаться унарной операцией, пусть ее и можно переписать в виде бинарной.
x++ операнд всего один. Унарный - одиночный
Похожие вопросы
- Почему в C# логические операторы имеют именно такой вид (||, |, &&, &, !)
- C#.Почему double не конвертируется во float?
- Решил попробовать изучать программирование (C# конкретно) и вот не могу понять почему код с упражнения не работает
- Почему в C# нумерация (индексы) элементов массива начинаются с нуля, а не с единицы?
- Приведите аргументы почему с# (си шарп) плохой? без коментариев (он норм)
- Почему "y" не присвоено значение?
- Почему C# относится к компилируемым языкам, компиляция это перевод всего кода в машинный, а C# переводится в байт код
- Почему объекты в C# такие монструозные - каким принципам следовала Майкрософт при их дизайне, и будет ли лучше?
- Почему в .NET нет встроенных типов данных с фиксированной точность?
- C#. Как вернуть индекс определенного элемента массива?Почему ошибка?