Есть ли какие-либо преимущества в определении имен переменных как __00000001, __00000002 и т. Д.?
Пример:
int __00000001, __00000002 = 0;
for (__00000001 = 0; __00000001 < 10; __00000001++) {
__00000002 = __00000002 + __00000001;
}
...
Обновление: это упоминалось на одном из моих занятий по программированию несколько лет назад, и я вспомнил, что профессор сказал, что есть некоторые преимущества его использования. Однако я не могу вспомнить больше информации. Возможно я не прав.
Эти конкретные имена переменных недоступны для пользовательских программ:
Все идентификаторы, которые начинаются со знака подчеркивания, а также заглавной буквы или другого знака подчеркивания, всегда зарезервированы для любого использования. (C11, раздел 7.1.3, пункт 1)
Так что это большой недостаток.
Стоит ли запутывать дерьмо в своем коде? Нет, если только ваша цель не состоит в том, чтобы буквально сделать это: сделать ваш код настолько трудным для чтения, насколько это возможно. Проблема в том, что вы тоже должны это прочитать.
Иногда вы сталкиваетесь с таким кодом, когда кто-то «декомпилирует» программу — имена переменных не сохраняются в процессе компиляции, так что это своего рода лучшее, что может сделать декомпилятор при реконструкции программы C ++. Конечно, он не может действительно реконструировать программу на C ++; он может только повторить уплощенную логику в синтаксисе C ++. Ну что ж.
Обращаясь конкретно к вашему примеру, стоит отметить, что все идентификаторы, начинающиеся с двух подчеркиваний, зарезервированы для реализации (ваш компилятор и стандартная библиотека), поэтому ваша программа имеет неопределенное поведение.