2016-02-23 2 views
-1

В C++ (и на других языках программирования) (x++) оценивает x как токен, а затем увеличивает его на 1, а (++x) сначала увеличивает x, затем оценивает новое значение x как токена.Почему существуют x ++ и ++ x, а x + = 2, но не x = + 2?

Аналогично, существует (x += 2) (оценивает x как токен, затем увеличивает его на 2). Однако (x =+ 2) не сводится к увеличению x на 2, а затем оценивает новое значение x как токена, но оценивается как x = +2.

Чтобы отличить x =+ 2 и x = +2, необходим правильный интервал, но я не понимаю, почему это было бы проблемой.

Почему (x =+ 2) не предназначен для выполнения функции двух предварительных приращений?

Редактировать: Цель этого - не выглядеть красиво, а облегчать некоторые случаи, которые могут возникать в циклах.

+0

, поскольку необходимо надлежащее расстояние, например. 'x = + 2' - это что. 'x = x + 2'? или 'x = положительный 2'? и как только вы должны ввести правильный интервал, наличие «x = + 2» и «x + = 2» не позволяет вам вообще не тратить время/пространство. –

+0

Цель этого не выглядит красивой, но облегчает некоторые случаи циклов. –

+0

и помните, что зум-фраза C - это «вся сила ассемблера со всей удобочитаемостью ассемблера». Большинство процессоров имеют инструкцию 'inc', чтобы сделать простой« x = x + 1 », тогда как у немногих/нет будет' inc2'. поэтому в то время как x ++ может непосредственно сопоставляться с этой инструкцией 'inc', сопоставление для варианта +2 отсутствует, поэтому вы можете просто полностью записать прирост +2. –

ответ

4

Почему (x =+ 2) не предназначен для выполнения функции двух (++x) выражений?

Поскольку пробелы в C++ не значимы (по модулю разделение ключевых слов, таких как class). Было бы очень резкий разрыв в языке, если эти два заявления означало совершенно различные вещи:

x =+ 2; 
x = +2; 

Давайте не превратить C++ в Python.

+0

У меня возникает соблазн задушить удар Питона, но я не буду. Пробел не работает таким образом в Python. Отступы значительны для Python, иначе пробелы не более значительны, чем в C++. –

2

Я помню книгу K & R (по крайней мере, первое издание, и у меня нет моей руки прямо сейчас), говоря, что =+ изначально предполагалось быть оператором на C, но было неясно разобрать. Так был выбран +=. Требование пробелов для устранения неоднозначности не является ужасно дружелюбным на языке, где пробелы обычно не значимы.

2

Это потому, что люди могут легко интерпретировать х = + 2, как х = положительный 2.

Смежные вопросы