#cpp #инициализация
Можно ли в C++ объявить несколько переменных и сразу присвоить одинаковое значение? Пример: int a, b, c, d = 0; Чтобы все переменные равны были 0.
Ответы
Ответ 1
Объявить несколько переменных и затем присвоить им одно и тоже значение не составляет проблему. Вы можете написать, например int a, b, c, d; a = b = c = d = 0; Однако если вы хотите инициализировать переменные при их объявлении, то придется каждую переменную инициализировать отдельно. Например int a = 0, b = 0, c = 0, d = 0; или int a = 0, b = a, c = a, d = a; Простое объявление в C++ определяется следующим образом (7 Declarations) The simple-declaration attribute-specifier-seqopt decl-specifier-seqopt init-declarator-listopt; где init-declarator-list определяется как (8 Declarators) init-declarator-list: init-declarator init-declarator-list , init-declarator init-declarator: declarator initializeropt То есть каждый декларатор (для простоты: объявляемый идентификатор) в списке имеет свой собственный инициализатор.Ответ 2
Можно использовать инициализацию из составного объекта, появившуюся в c++17: #includeauto [a, b, c, d] = std::array (); Или в более общем случае для инициализации разными значениями: auto [a, b, c, d] = std::array {{ 1, 2, 3, 4 }}; Такой вариант с большой долей вероятности компилятором будет развернут в тот же код, что и при использовании явной ручной инициализации вида: int a = 1; int b = 2; int c = 3; int d = 4; Однако мне кажется проще и правильнее сразу использовать массив, а не индивидуальные разноимённые переменные. Ответ 3
Еще можно как-то так поступить: struct vars { int a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p; vars() { ZeroMemory(this,sizeof(vars)); } };
Комментариев нет:
Отправить комментарий