Все выпуски  

RFpro.ru: Программирование на C / C++


РАССЫЛКИ ПОРТАЛА RFPRO.RU

Лучшие эксперты в разделе

solowey
Статус: Бакалавр
Рейтинг: 314
∙ повысить рейтинг »
zdwork
Статус: 3-й класс
Рейтинг: 73
∙ повысить рейтинг »
CradleA
Статус: Профессор
Рейтинг: 43
∙ повысить рейтинг »

∙ С / С++

Номер выпуска:1966
Дата выхода:21.09.2019, 18:15
Администратор рассылки:Андрей Кузнецов aka Dr_Andrew (Старший модератор)
Подписчиков / экспертов:48 / 35
Вопросов / ответов:1 / 2

Консультация # 196375: здрасте. подскажите где ошибка #include <stdio.h> int ror(int i) { extern int i; return 0; } int main(int) { int i = 5; printf("i %d\r\n", ror(i)); printf("HELLO WORLD!\r\n"); return 0; } пожалуйста ...

Консультация # 196375:

здрасте. подскажите где ошибка

#include <stdio.h>

int ror(int i)
{
extern int i;

return 0;
}

int main(int)
{
int i = 5;

printf("i %d\r\n", ror(i));

printf("HELLO WORLD!\r\n");

return 0;
}
пожалуйста

Дата отправки: 15.09.2019, 20:49
Вопрос задал: 89285189543rex (Посетитель)
Всего ответов: 2
Страница онлайн-консультации »


Консультирует zdwork (3-й класс):

Здравствуйте, 89285189543rex!
Вот что получим
i 0
HELLO WORLD!

Консультировал: zdwork (3-й класс)
Дата отправки: 16.09.2019, 06:59
Рейтинг ответа:

НЕ одобряю +1 одобряю!


Консультирует solowey (Бакалавр):

Здравствуйте, 89285189543rex!
Ошибок в коде нет. При компиляции есть предупреждения.

// Example program
#include <stdio.h>

int ror(int i)
{
extern int i;  // warning: unused variable 'i'  - это говорит о том, что переменная не используется

return 0;
}

int main(int)  // warning: 'int main(int)' takes only zero or two arguments (int main (int) 'принимает только ноль или два аргумента)
{
int i = 5;

printf("i %d\r\n", ror(i));

printf("HELLO WORLD!\r\n");

return 0;
}


В этом коде присутствуют проблемы:
int ror(int i)
{
extern int i;

return 0;
}

1. Две переменных имеют одно и тоже имя i. Они друг друга перекрывают.
2. В функции ни чего не делается с переменными.
3. extern - это ключевое слова для объявления переменой глобальной. Зачем? (почитать можно тут)

Функция main в таком виде не используется. Почитать можно тут.

Зачем используется функция ror(i)? Она все время возвращает 0.

Чтобы сделать переменную extern int i глобальной ее нужно вынести за пределы функции. И даль глобальное имя, например, extern int global.
#include <stdio.h>

extern int global = 100;

int ror(int i)
{
int iTemp = global - i;

return iTemp;
}

int main()
{
int i = 5;

printf("i %d\r\n", ror(i));

printf("HELLO WORLD!\r\n");

return 0;
}

Вот пример более осмысленного кода.

Консультировал: solowey (Бакалавр)
Дата отправки: 16.09.2019, 11:11
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Оценить выпуск | Задать вопрос экспертам

главная страница  |  стать участником  |  получить консультацию
техническая поддержка

Дорогой читатель!
Команда портала RFPRO.RU благодарит Вас за то, что Вы пользуетесь нашими услугами. Вы только что прочли очередной выпуск рассылки. Мы старались. Пожалуйста, оцените его. Если совет помог Вам, если Вам понравился ответ, Вы можете поблагодарить автора - для этого в каждом ответе есть специальные ссылки. Вы можете оставить отзыв о работе портале. Нам очень важно знать Ваше мнение. Вы можете поближе познакомиться с жизнью портала, посетив наш форум, почитав журнал, который издают наши эксперты. Если у Вас есть желание помочь людям, поделиться своими знаниями, Вы можете зарегистрироваться экспертом. Заходите - у нас интересно!
МЫ РАБОТАЕМ ДЛЯ ВАС!


В избранное