Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.55/22: Рейтинг темы: голосов - 22, средняя оценка - 4.55
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,882
1

Как это читается по-русски

22.10.2013, 01:55. Показов 4025. Ответов 35
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
C++
1
2
3
4
5
6
7
8
9
10
11
int MyFunc(...)
{
  cout<<MyFunc[2]; //это
  //cout<<MyFunc    //это
  return 0;
}
 
 
int main() {
  MyFunc(100);
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.10.2013, 01:55
Ответы с готовыми решениями:

Как это читается
(*r).sled r - &gt; sled Между ними нет разницы

Re: Как это читается по-русски
Нужны администраторы групп ВКонтакте. Зарплата 300 рублей в час. График посменный 4 часа в сутки....

На сколько это по-русски?
Проверьте, пожалуйста: .

Fretting precession - как по-русски?
Если я не ошибаюсь, что в русской терминологии термин &quot;прецессия&quot; употреблется только в применении...

35
Croessmah
22.10.2013, 06:51
  #2

Не по теме:

Цитата Сообщение от daslex Посмотреть сообщение
Как это читается по-русски
C++
1
cout<<MyFunc[2];
мая видеть, что тут не па руски нипасана!

0
Модератор
Эксперт по электронике
8909 / 6678 / 918
Регистрация: 14.02.2011
Сообщений: 23,523
22.10.2013, 07:18 3
Цитата Сообщение от daslex Посмотреть сообщение
cout<<MyFunc[2]; //это
А по не русски, что ты хотел написать?

Цитата Сообщение от Croessmah Посмотреть сообщение
мая видеть, что тут не па руски нипасана!
0
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,882
23.10.2013, 12:16  [ТС] 4
мне не ясно почему выводится 1 и почему такая конструкция вообще срабатывает.
я не понимаю что здесь происходит.

не нравится выражение: "как прочитать?", тогда: "как объяснить действия программы и почему такое допускается?"
0
859 / 448 / 112
Регистрация: 06.07.2013
Сообщений: 1,491
23.10.2013, 12:40 5
это вообще не должно компилироваться
0
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,882
23.10.2013, 12:52  [ТС] 6
Raali, CodeBlock (minGW) компилирует. Запускает. В результате на экране 1.
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
23.10.2013, 12:57 7
Цитата Сообщение от Raali Посмотреть сообщение
это вообще не должно компилироваться
mingw компилирует.
1
859 / 448 / 112
Регистрация: 06.07.2013
Сообщений: 1,491
23.10.2013, 12:57 8
Цитата Сообщение от daslex Посмотреть сообщение
Raali, CodeBlock (minGW) компилирует. Запускает
Значит просто воспринимает указатель MyFunc как начало массива, только непонятно какого типа(int что ли?)
1
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
23.10.2013, 13:03 9
Про это:
C++
1
 cout << MyFunc;
пишет:
warning: the address of 'int MyFunc(...)' will always evaluate as 'true' [-Waddress]|
Добавлено через 2 минуты
Про это:
C++
1
cout << MyFunc[2];
warning: pointer to a function used in arithmetic [-Wpointer-arith]|
1
859 / 448 / 112
Регистрация: 06.07.2013
Сообщений: 1,491
23.10.2013, 13:04 10
Цитата Сообщение от alsav22 Посмотреть сообщение
warning: the address of 'int MyFunc(...)' will always evaluate as 'true' [-Waddress]|
Цитата Сообщение от daslex Посмотреть сообщение
Запускает. В результате на экране 1.
ну вот и все ясно, Mingw считает адреса функции как указатель на массив bool
1
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,882
23.10.2013, 13:09  [ТС] 11
Цитата Сообщение от Raali Посмотреть сообщение
как указатель на массив bool
C++
1
2
3
4
5
6
7
8
bool A[99]={0,};
 
int MyFunc(...)
{
  MyFunc[0]=A; //это
  //cout<<MyFunc    //это
  return 0;
}
error: cannot convert 'bool [99]' to 'int(...)' in assignment|
||=== Build finished: 2 errors, 1 warnings (0 minutes, 1 seconds)
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
23.10.2013, 13:09 12
Вот так адрес функции выведет:
C++
1
cout << (void*)MyFunc;
1
859 / 448 / 112
Регистрация: 06.07.2013
Сообщений: 1,491
23.10.2013, 13:14 13
Цитата Сообщение от daslex Посмотреть сообщение
C++
1
2
3
4
5
6
7
bool A[99]={0,};
int MyFunc(...)
{
MyFunc[0]=A; //это
//cout<<MyFunc * *//это
return 0;
}
дак надо тогда уж так MyFunc[0] = A[0];
1
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,882
23.10.2013, 13:21  [ТС] 14
Цитата Сообщение от Raali Посмотреть сообщение
дак надо тогда уж так
то же самое. та же ошибка.

Добавлено через 4 минуты
alsav22, адрес функции мне и не нужен тут. Я просто хочу понять что происходит и зачем это допустимо.
Что происходит я понял (правда не до конца, по сообщениям видно чего не понял), но не понял зачем такое сделано и с какой целью можно применять
0
alsav22
23.10.2013, 13:25
  #15

Не по теме:

Цитата Сообщение от daslex Посмотреть сообщение
alsav22, адрес функции мне и не нужен тут.
Если бы вы знали, как он мне не нужен...

1
859 / 448 / 112
Регистрация: 06.07.2013
Сообщений: 1,491
23.10.2013, 13:28 16
Нет такой перегрузки для ostream который бы принимал указатель функции, но есть неявное преобразование для bool, следовательно указатели функции неявно преобразуются в bool. Это не сделано с какой то целью, а просто допущение.
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
23.10.2013, 13:31 17
Цитата Сообщение от daslex Посмотреть сообщение
и с какой целью можно применять
Вот этого-то и не нужно делать... Не нужно заниматься извращениями. Эксперименты ради экспериментов?

Добавлено через 2 минуты
Цитата Сообщение от Raali Посмотреть сообщение
Нет такой перегрузки для ostream который бы принимал указатель функции
Точно знаете? ostream не может адрес вывести?
0
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,882
23.10.2013, 13:40  [ТС] 18
alsav22, нет.
Не нужно так не нужно.

Но уметь объяснить по мне очень нужно.
Объяснить-то объяснил, например, а на практике посмотреть и бац - тупик. И понятия не имеешь заблуждался в суждениях или был прав.
Это как с Raali тут сначала написал в ответ, что указатель... но информация неполная (а я не могу проверить и понятия не имею, а вдруг собеседник сам заблуждается если не вижу на практике).

Так как здесь функция указана как функция с переменным числом параметров, то пока не увижу, что Raail прав, не смогу поверить на слово, поэтому интересно где можно применить (даже самый бестолковый пример).

Даже если я пишу MyFunc[0]=true; , то та же ошибка. Поэтому я стремлюсь убедится каким-то примером.
0
859 / 448 / 112
Регистрация: 06.07.2013
Сообщений: 1,491
23.10.2013, 13:45 19
Цитата Сообщение от alsav22 Посмотреть сообщение
Точно знаете? ostream не может адрес вывести?
нет, поверил на слово stackoverflow
Issue
может быть старые стандарты не поддерживали?
1
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
23.10.2013, 15:17 20
Цитата Сообщение от daslex Посмотреть сообщение
Но уметь объяснить по мне очень нужно.
Если бы я точно знал, то давно объяснил бы. Для меня тут вопрос довольно туманный. Тем более от компилятора зависит. Почему, в отличие от студии, mingw имя функции воспринимает как булево значение, для меня тоже загадка. Может эксперты что-нибудь скажут....

Добавлено через 9 минут
daslex, ну вот, Raali ссылку выложил, читайте. Если я правильно понял, то это всё касается именно вывода адреса функции через ostream (в студии, наверное, сделан возможным вывод адреса функции без приведения к bool).

Добавлено через 1 час 18 минут
printf() нормально выводит:
C++
1
printf("%p", MyFunc);
1
23.10.2013, 15:17
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.10.2013, 15:17
Помогаю со студенческими работами здесь

Adsense - как сделать по-русски?
У меня проблема: Гугл Адсенс вставляет свою рекламу на мой сайт на английском языке. Хотя при...

Как прописать строки по- русски
Как прописать строки по-русски, чтобы при выводе на экран не было иероглифов?

Можно ли как определить как писать формулы в яцейки из VBA по русски или английски?
в общем проблема в том можно ли как определить как писать формулы в яцейки из VBA по русски или...

Как по-русски обозвать назначение члена?
typedef struct _CONSOLE_SELECTION_INFO { DWORD dwFlags; COORD dwSelectionAnchor; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru