Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.02.2011, 21:58   #1
Степан sapral
 
Регистрация: 11.01.2011
Сообщений: 7
Сообщение массивы

помогите исправить ошибку
case 9:{int i=3,k;
int array[i];
for(k=0;k<=i-1;k++)scanf("%d",&array[i]);
for(k=0;k<=i-1;k++)
printf("a[%d]=%d ",i,array[i]);
break;}
компилятор говорит что нужно константное выражение. што такоє??
Степан sapral вне форума Ответить с цитированием
Старый 23.02.2011, 22:04   #2
Hacker19_90
Delphi Warrior
Старожил
 
Аватар для Hacker19_90
 
Регистрация: 15.08.2008
Сообщений: 2,502
По умолчанию

Цитата:
Код:
int i=3,k;
int array[i];
Это значит что длина массива должна быть постоянной! А не переменной как у вас!
Измените на
Код:
case 9:{
const int i=3;
int k;
int array[i];
for(k=0;k<=i-1;k++)scanf("%d",&array[k]);
for(k=0;k<=i-1;k++)
printf("a[%d]=%d ",i,array[k]);
break;}
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq - 636-954-303
Hacker19_90 вне форума Ответить с цитированием
Старый 23.02.2011, 22:42   #3
Obey-Kun
Линуксоид
Участник клуба
 
Аватар для Obey-Kun
 
Регистрация: 31.07.2009
Сообщений: 1,403
По умолчанию

Только в будущем будьте человеком и оставьте i для счётчиков .
Ещё хотелось бы отметит, что в C, в отличие от C++, использовать не-константы для задания размеров массивов разрешено.
Алсо у вас лишние фигурные скобки.
Я схожу с ума или это глючит реальность?
Jabber ID: obey@obey.su
Obey-Kun вне форума Ответить с цитированием
Старый 25.02.2011, 15:46   #4
Д_М
Пользователь
 
Регистрация: 02.02.2011
Сообщений: 92
По умолчанию

Цитата:
Ещё хотелось бы отметит, что в C, в отличие от C++, использовать не-константы для задания размеров массивов разрешено.
К моему удивлению, g++ без проблем скомпилировало такое:

Код:
#include <iostream>

using namespace std;

int main()
{
  int i;
  for(;;) {
    cin >> i;
    int a[i];
    cout << "i = " << i << " sizeof = " << sizeof(a) << endl;
  }
}
Это отступление от стандарта?
Особенно озадачивает создание массивов нулевой и отрицательной длины.

gcc version 3.4.6
Д_М вне форума Ответить с цитированием
Старый 25.02.2011, 15:58   #5
Obey-Kun
Линуксоид
Участник клуба
 
Аватар для Obey-Kun
 
Регистрация: 31.07.2009
Сообщений: 1,403
По умолчанию

Цитата:
Особенно озадачивает создание массивов нулевой и отрицательной длины.
По стандарту это undefined behavior. Так что всё в порядке. Но это одна из причин, по которым VLA в больших проектах лучше бы избегать.

Цитата:
К моему удивлению, g++ без проблем скомпилировало такое:
GCC поддерживает VLA в полной мере: http://gcc.gnu.org/onlinedocs/gcc/Variable-Length.html
Чтобы ругалось на это, используйте ключ pednatic.
Код:
obey@damntux tmp % g++ -pedantic -std=c++98 ./main.c
./main.c: В функции ‘int main()’:
./main.c:5:12: предупреждение: ISO C++ запрещает массив переменного размера ‘a’
В GCC это не единственное отступление от стандарта, которое допускается по дефолту. Просто следует включать вэрнинги. -Wall, -W, -pedantic и т.п.
Я схожу с ума или это глючит реальность?
Jabber ID: obey@obey.su
Obey-Kun вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
массивы Aman Паскаль, Turbo Pascal, PascalABC.NET 3 28.09.2010 15:43
Массивы vbchristy46 Помощь студентам 4 15.06.2010 16:28
Динамические массивы и массивы варианты N@stya Помощь студентам 0 11.06.2010 21:09
С++, Массивы, динамические массивы. -Sunshine- Помощь студентам 1 19.04.2010 02:17
Даны одномерные массивы А и В. Сформировать массивы, состоящие из элемент LyaLya Помощь студентам 15 20.12.2009 14:12