Модуль: Присваивание и инициализация переменных


12. Инициализация нескольких переменных


В прошлом разделе мы отметили, что в одном операторе можно определить несколько переменных одного типа, разделив их имена запятой:
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" останется неинициализированной, и компилятор может пожаловаться, а может и нет. Если же нет, то это отличный способ заставить вашу программу периодически аварийно завершаться или выдавать спорадические результаты. Подробнее о том, что происходит при использовании неинициализированных переменных, мы поговорим в ближайшее время.

time 1000 ms
memory 256 Mb

Комментарий учителя