не компилится элементарный код

Модератор: Модераторы разделов

luncher
Сообщения: 84
ОС: mandriva 2008 spring

не компилится элементарный код

Сообщение luncher »

вот код:

Код: Выделить всё

# include <stdlib.h>
# include <math.h>
# include <iostream>
int plus(int, int);

main()
{
//using namespace std;
int sum,x=2,y=3;
//cin >> x;
//cin >> y;
plus(x,y);
std::cout << sum << std::endl;
}

int plus(int a, int b)
{
int a, b, sum;
sum=a*b;
return sum;
}

компилю в linux в g++
говорит:
prog3.cpp: In function ‘int plus(int, int)’:
prog3.cpp:18: ошибка: declaration of ‘int a’ shadows a parameter
prog3.cpp:18: ошибка: declaration of ‘int b’ shadows a parameter

раньше не сталкивался с такими ошибками, не понимаю как исправить, обьясните пожайлуста в чем ошибка и как с нею бороться!
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu

Re: не компилится элементарный код

Сообщение serzh-z »

luncher писал(а):
14.07.2009 16:06
prog3.cpp:18: ошибка: declaration of ‘int a’ shadows a parameter
Объявления локлаьных "a" и "b" скрывает параметры функции... Как обращаться к аргументу функции "a", если на стеке объявлена локальная переменная с таким же именем?
Спасибо сказали:
Аватара пользователя
Rootlexx
Бывший модератор
Сообщения: 4471
Статус: GNU generation
ОС: Debian GNU/Linux

Re: не компилится элементарный код

Сообщение Rootlexx »

luncher писал(а):
14.07.2009 16:06
int plus(int a, int b)

luncher писал(а):
14.07.2009 16:06
int a, b

Переменные a и b уже определены в объявлении функции. Сообщение об ошибке ясно об этом говорит:
luncher писал(а):
14.07.2009 16:06
ошибка: declaration of ‘int a’ shadows a parameter

Вольный перевод: «объявление 'int a' перекрывает (затеняет, скрывает) параметр функции».
Спасибо сказали:
luncher
Сообщения: 84
ОС: mandriva 2008 spring

Re: не компилится элементарный код

Сообщение luncher »

спасибо за то что наставили дурака на путь истинный :rolleyes:
теперь все компилится, действительно глупая ошибка

только старнно что при каждом запуске программы переменная sum получается каждые раз разной, огромной и отрицательной
Спасибо сказали:
Аватара пользователя
fbi
Сообщения: 34

Re: не компилится элементарный код

Сообщение fbi »

Ну а какой она ещё будет, если вы её ни чем не инициализируете, и ни чего ей не присваиваете:
main()
{
//using namespace std;
int sum,x=2,y=3;
//cin >> x ;
//cin >> y ;
plus(x,y);
std::cout << sum << std::endl;
}


sum = plus(x,y);
Спасибо сказали:
luncher
Сообщения: 84
ОС: mandriva 2008 spring

Re: не компилится элементарный код

Сообщение luncher »

fbi писал(а):
14.07.2009 16:45
Ну а какой она ещё будет, если вы её ни чем не инициализируете, и ни чего ей не присваиваете:
main()
{
//using namespace std;
int sum,x=2,y=3;
//cin >> x ;
//cin >> y ;
plus(x,y);
std::cout << sum << std::endl;
}


sum = plus(x,y);

спасибо, чето я сегодня особенно туплю
Спасибо сказали: