Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.79
daslex
1084 / 494 / 101
Регистрация: 02.08.2011
Сообщений: 2,408
22.10.2013, 01:55     Как это читается по-русски #1
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);
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.10.2013, 01:55     Как это читается по-русски
Посмотрите здесь:

Как это читается C++
Не пишет по-русски C++
C++ Как прописать строки по- русски
C++ как правильно читается ( что значит )
C++ Как по-русски обозвать целиком эту конструкцию?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
22.10.2013, 06:51
  #2

Не по теме:

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

ValeryS
Модератор
6375 / 4841 / 443
Регистрация: 14.02.2011
Сообщений: 16,045
22.10.2013, 07:18     Как это читается по-русски #3
Цитата Сообщение от daslex Посмотреть сообщение
cout<<MyFunc[2]; //это
А по не русски, что ты хотел написать?

Цитата Сообщение от Croessmah Посмотреть сообщение
мая видеть, что тут не па руски нипасана!
daslex
1084 / 494 / 101
Регистрация: 02.08.2011
Сообщений: 2,408
23.10.2013, 12:16  [ТС]     Как это читается по-русски #4
мне не ясно почему выводится 1 и почему такая конструкция вообще срабатывает.
я не понимаю что здесь происходит.

не нравится выражение: "как прочитать?", тогда: "как объяснить действия программы и почему такое допускается?"
Raali
572 / 276 / 12
Регистрация: 06.07.2013
Сообщений: 917
Завершенные тесты: 1
23.10.2013, 12:40     Как это читается по-русски #5
это вообще не должно компилироваться
daslex
1084 / 494 / 101
Регистрация: 02.08.2011
Сообщений: 2,408
23.10.2013, 12:52  [ТС]     Как это читается по-русски #6
Raali, CodeBlock (minGW) компилирует. Запускает. В результате на экране 1.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
23.10.2013, 12:57     Как это читается по-русски #7
Цитата Сообщение от Raali Посмотреть сообщение
это вообще не должно компилироваться
mingw компилирует.
Raali
572 / 276 / 12
Регистрация: 06.07.2013
Сообщений: 917
Завершенные тесты: 1
23.10.2013, 12:57     Как это читается по-русски #8
Цитата Сообщение от daslex Посмотреть сообщение
Raali, CodeBlock (minGW) компилирует. Запускает
Значит просто воспринимает указатель MyFunc как начало массива, только непонятно какого типа(int что ли?)
alsav22
5282 / 4801 / 442
Регистрация: 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]|
Raali
572 / 276 / 12
Регистрация: 06.07.2013
Сообщений: 917
Завершенные тесты: 1
23.10.2013, 13:04     Как это читается по-русски #10
Цитата Сообщение от alsav22 Посмотреть сообщение
warning: the address of 'int MyFunc(...)' will always evaluate as 'true' [-Waddress]|
Цитата Сообщение от daslex Посмотреть сообщение
Запускает. В результате на экране 1.
ну вот и все ясно, Mingw считает адреса функции как указатель на массив bool
daslex
1084 / 494 / 101
Регистрация: 02.08.2011
Сообщений: 2,408
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)
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
23.10.2013, 13:09     Как это читается по-русски #12
Вот так адрес функции выведет:
C++
1
cout << (void*)MyFunc;
Raali
572 / 276 / 12
Регистрация: 06.07.2013
Сообщений: 917
Завершенные тесты: 1
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];
daslex
1084 / 494 / 101
Регистрация: 02.08.2011
Сообщений: 2,408
23.10.2013, 13:21  [ТС]     Как это читается по-русски #14
Цитата Сообщение от Raali Посмотреть сообщение
дак надо тогда уж так
то же самое. та же ошибка.

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

Не по теме:

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

Raali
572 / 276 / 12
Регистрация: 06.07.2013
Сообщений: 917
Завершенные тесты: 1
23.10.2013, 13:28     Как это читается по-русски #16
Нет такой перегрузки для ostream который бы принимал указатель функции, но есть неявное преобразование для bool, следовательно указатели функции неявно преобразуются в bool. Это не сделано с какой то целью, а просто допущение.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
23.10.2013, 13:31     Как это читается по-русски #17
Цитата Сообщение от daslex Посмотреть сообщение
и с какой целью можно применять
Вот этого-то и не нужно делать... Не нужно заниматься извращениями. Эксперименты ради экспериментов?

Добавлено через 2 минуты
Цитата Сообщение от Raali Посмотреть сообщение
Нет такой перегрузки для ostream который бы принимал указатель функции
Точно знаете? ostream не может адрес вывести?
daslex
1084 / 494 / 101
Регистрация: 02.08.2011
Сообщений: 2,408
23.10.2013, 13:40  [ТС]     Как это читается по-русски #18
alsav22, нет.
Не нужно так не нужно.

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

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

Даже если я пишу MyFunc[0]=true; , то та же ошибка. Поэтому я стремлюсь убедится каким-то примером.
Raali
572 / 276 / 12
Регистрация: 06.07.2013
Сообщений: 917
Завершенные тесты: 1
23.10.2013, 13:45     Как это читается по-русски #19
Цитата Сообщение от alsav22 Посмотреть сообщение
Точно знаете? ostream не может адрес вывести?
нет, поверил на слово stackoverflow
Issue
может быть старые стандарты не поддерживали?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.10.2013, 15:17     Как это читается по-русски
Еще ссылки по теме:

C++ нужно создать таблицу из 3 строк и 4 столбцов и заполнить её (любой информацией,это неважно) . Как это можно сделать ?
C++ как соединить b и с в число, если а это число, б это десятки перевернутого числа, с это единицы перевернутого числа вот в это строчке c=a+b,c;
Связанный список. Как это делается и зачем это нужно? C++

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

Или воспользуйтесь поиском по форуму:
alsav22
5282 / 4801 / 442
Регистрация: 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);
Yandex
Объявления
23.10.2013, 15:17     Как это читается по-русски
Ответ Создать тему
Опции темы

Текущее время: 05:36. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru