Ответ 1
int column = 0, row = 0, index = 0;
Я всегда, хотя я объявляю эти три переменные, что все они будут иметь значение 0
int column, row, index = 0;
Но я нахожу, что только индекс равен нулю, а остальные - как мусор, как 844553 и 2423445.
Как инициализировать все эти переменные до нуля без объявления каждой переменной в новой строке?
int column = 0, row = 0, index = 0;
Когда вы заявляете:
int column, row, index = 0;
Только индекс установлен на ноль.
Однако вы можете сделать следующее:
int column, row, index;
column = index = row = 0;
Но лично я предпочитаю следующее, что было указано.
На мой взгляд, это более читаемая форма.
int column = 0, row = 0, index = 0;
или
int column = 0;
int row = 0;
int index = 0;
Как сказал @Josh, правильный ответ:
int column = 0,
row = 0,
index = 0;
Вам нужно будет следить за тем же с указателями. Это:
int* a, b, c;
Является эквивалентным:
int *a;
int b;
int c;
Если вы объявляете одну переменную/объект на строку, она не только решает эту проблему, но делает код более понятным и предотвращает глупые ошибки при объявлении указателей.
Чтобы напрямую ответить на ваш вопрос, вы должны явно инициализировать каждую переменную до 0. int a = 0, b = 0, c = 0;
.
int column(0), row(0), index(0);
Обратите внимание, что эта форма также будет работать с настраиваемыми типами, особенно когда их конструкторы принимают более одного аргумента.
Возможные подходы:
memset
или {0}
массив.struct
и memset
или создайте конструктор, который будет инициализирован
их до нуля.Начиная с 2k18 вы можете использовать Structured Bindings:
#include <iostream>
#include <tuple>
int main ()
{
auto [hello, world] = std::make_tuple("Hello ", "world!");
std::cout << hello << world << std::endl;
return 0;
}
Я бы не рекомендовал это, но ради окончательной попытки получить некоторую репутацию (и поскольку я не вижу этого решения), вы также можете сделать это:
int row, column, index = row = column = 0;
Когда вы объявляете переменную без ее инициализации, выбирается случайное число из памяти, и переменная инициализируется этим значением.