В прошлом разделе мы отметили, что в одном операторе можно определить несколько переменных одного типа, разделив их имена запятой:
int a, b;
Мы также отметили, что лучше всего избегать этого синтаксиса вообще. Однако, поскольку вы можете встретить и другой код, использующий этот стиль, будет полезно рассказать о нем немного подробнее, хотя бы для того, чтобы усилить некоторые причины, по которым вам следует его избегать.
int a = 5, b = 6; // инициализация копированием
int c( 7 ), d( 8 ); // прямая инициализация
int e { 9 }, f { 10 }; // прямая инициализация списком
int g = { 9 }, h = { 10 }; // копирующая инициализация списком
int i {}, j {}; // инициализация значения
К сожалению, здесь есть один распространенный подводный камень, который может возникнуть, когда программист по ошибке пытается инициализировать обе переменные с помощью одного оператора инициализации:
int a, b = 5; // неправильно(a не инициализируется!)
int a = 5, b = 5; // правильно
В верхнем выражении переменная "a" останется неинициализированной, и компилятор может пожаловаться, а может и нет. Если же нет, то это отличный способ заставить вашу программу периодически аварийно завершаться или выдавать спорадические результаты. Подробнее о том, что происходит при использовании неинициализированных переменных, мы поговорим в ближайшее время.