Страницы

Поиск по вопросам

пятница, 14 декабря 2018 г.

Использование переменных объявленных в for

Почему недопустим такой вариант?
int sum=0; for(int j=0; jА такой компилируется:
int sum=0; int j=0; for( ; j(mas уже инициализирован)


Ответ

Я думаю, оба варианта компилируются, только первый выдаёт предупреждение из-за того, что этот код содержит undefined behaviour.
Переменную sum инициализировать за вас компилятор не будет. А использование неинициализировнной переменной есть даже не unspecified, а undefined behaviour. Это значит, что не только «начальное значение переменной может быть любым», но «при выполнении программы может произойти всё, что угодно, включая форматирование жёсткого диска».

Окей, вопрос отредактирован, теперь обе переменные инициализированы, ищем дальше.
Но я не заметил ещё одну ошибку. У вас написано for(int j=0; jВ результате в первом случае переменная j локальна в блоке и не видна за его пределами: этот код можно равносильно записать так:
for(int j=0; j{ sum+=mas[0][j]; sum+=mas[n-1][j]; }

Комментариев нет:

Отправить комментарий