Новые экспериментальные операторы Си++

от автора

Так часто приходится писать такой код:

x = (y + 1) % 10; x = (y + 1) * (z - 1); x = (double)(f(y) + 1); 

Так как у операторов + и — такой низкий приоритет, то приходится постоянно заключать их в скобки, а это приводит к глубокому вложенному коду, который сложно понять.
В Visual Studio 2015 RC добавлена пара экспериментальных операторов, названных операторы–головастики. Они позволяют добавлять и вычитать единицу без необходимости прибегать к скобкам.

x = -~y % 10; x = -~y * ~-z; x = (double)-~f(y);


Они так названы, так как напоминают головастиков, которые плывут к или от значения. Тильда это голова, а минус — хвост.

Синтакс Значение Мнемоника
-~y y + 1 Головастик плывет к значению и делает его больше
~-y y — 1 Головастик плывет от значения и делает его меньше

Чтобы включить экспериментальную поддержку операторов–головастиков, добавьте в начале C++ файла:

#define __ENABLE_EXPERIMENTAL_TADPOLE_OPERATORS 

Вот простая программа, которая демонстрирует применение операторов–головастиков:

#define __ENABLE_EXPERIMENTAL_TADPOLE_OPERATORS  #include <ios> #include <iostream> #include <istream>   int __cdecl main(int, char**) {    int n = 3;    std::cout << "3 + 1 = " << -~n << std::endl;    std::cout << "(3 - 1) * (3 + 1) " << ~-n * -~n << std::endl;    return 0; } 

Помните, что эти операторы всё ещё экспериментальные. Они не являются официальной частью языка Си++, но вы можете поиграть с ними и оставить ваши замечания здесь.

ссылка на оригинал статьи http://habrahabr.ru/post/258811/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *