Отдисциллированный пример с VERTEX_ENTITY:
//... (код см. выше) ...
запускаем так: cl test.cpp
Варнингов нет. Хотя гцц тут должен дать варнинг.
Уважаемый Visual, с нетерпением жду ваши комментарии по этому поводу.
ОК, давайте на этот раз сосредоточим внимание на компиляторе Microsoft, поскольку у вас, как я понял, есть недоверие к нему. Запускаем ваш пример так, как вы указали. У меня получилось на выходе:
-1 -1С первой отрицательной единицей нет проблем: в вашем примере локальный список из 10 значений инициализирован полностью (ai[9]= -1), так что все законно.
А вот откуда берется вторая отрицательная единица, когда вроде бы должен быть 0, вопрос интересный. Здесь так и получается, как сказано в заповеди: не оставляйте неинициализированных элементов в структуре, тем паче в локально объявленной, "ибо воздастся вам полной мерой за грехи ваши"
![:p](http://vse.kz/public/style_emoticons/default/mad.gif)
Там будет все, что угодно (но см. ниже!)
С массивами признаю - был неправ
Оно их таки инициализирует...
Гм... М-да. Повинную голову и меч не сечет...
![;)](http://vse.kz/public/style_emoticons/default/smile.gif)
Но это еще не все! Заявляю, что структуры тоже можно инициализировать неполным списком инициализации! Точно так же, как был инициализирован массив в вашем предыдущем примере (допустимый, хоть и плохой стиль). И так же, как и для массива, если инициализаторов в списке меньше, чем элементов в структуре, остальным элементам автоматически присваивается 0 (или NULL, если элемент - указатель). Но ведь в вашем примере первый элемент структуры
p.a уже был явно и безусловно инициализирован, не так ли? Тогда почему же в остальных элементах, в том числе и в последнем элементе
p.с все-таки не нули?
Надо ли мне отвечать на этот вопрос или вы легко ответите сами?
Сообщение отредактировал Visual1: 22.10.2005, 00:49:55