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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.79
daslex
1088 / 498 / 102
Регистрация: 02.08.2011
Сообщений: 2,479
#1

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

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

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++ Как по-русски обозвать целиком эту конструкцию?
Почему не компилирует слова по русски, а выводит иероглифы какието? что для этого сделать надо? C++
C++ нужно создать таблицу из 3 строк и 4 столбцов и заполнить её (любой информацией,это неважно) . Как это можно сделать ?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
22.10.2013, 06:51
  #2

Не по теме:

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

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

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

не нравится выражение: "как прочитать?", тогда: "как объяснить действия программы и почему такое допускается?"
Raali
622 / 326 / 34
Регистрация: 06.07.2013
Сообщений: 1,049
Завершенные тесты: 1
23.10.2013, 12:40     Как это читается по-русски #5
это вообще не должно компилироваться
daslex
1088 / 498 / 102
Регистрация: 02.08.2011
Сообщений: 2,479
23.10.2013, 12:52  [ТС]     Как это читается по-русски #6
Raali, CodeBlock (minGW) компилирует. Запускает. В результате на экране 1.
alsav22
5410 / 4806 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
23.10.2013, 12:57     Как это читается по-русски #7
Цитата Сообщение от Raali Посмотреть сообщение
это вообще не должно компилироваться
mingw компилирует.
Raali
622 / 326 / 34
Регистрация: 06.07.2013
Сообщений: 1,049
Завершенные тесты: 1
23.10.2013, 12:57     Как это читается по-русски #8
Цитата Сообщение от daslex Посмотреть сообщение
Raali, CodeBlock (minGW) компилирует. Запускает
Значит просто воспринимает указатель MyFunc как начало массива, только непонятно какого типа(int что ли?)
alsav22
5410 / 4806 / 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
622 / 326 / 34
Регистрация: 06.07.2013
Сообщений: 1,049
Завершенные тесты: 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
1088 / 498 / 102
Регистрация: 02.08.2011
Сообщений: 2,479
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
5410 / 4806 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
23.10.2013, 13:09     Как это читается по-русски #12
Вот так адрес функции выведет:
C++
1
cout << (void*)MyFunc;
Raali
622 / 326 / 34
Регистрация: 06.07.2013
Сообщений: 1,049
Завершенные тесты: 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
1088 / 498 / 102
Регистрация: 02.08.2011
Сообщений: 2,479
23.10.2013, 13:21  [ТС]     Как это читается по-русски #14
Цитата Сообщение от Raali Посмотреть сообщение
дак надо тогда уж так
то же самое. та же ошибка.

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

Не по теме:

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

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

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

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

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

Даже если я пишу MyFunc[0]=true; , то та же ошибка. Поэтому я стремлюсь убедится каким-то примером.
Raali
622 / 326 / 34
Регистрация: 06.07.2013
Сообщений: 1,049
Завершенные тесты: 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++ как соединить b и с в число, если а это число, б это десятки перевернутого числа, с это единицы перевернутого числа вот в это строчке c=a+b,c;
Криво читается бинарник C++
Связанный список. Как это делается и зачем это нужно? C++
C++ Не читается аргумент функции
Не читается символ 'e' C++

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

Или воспользуйтесь поиском по форуму:
alsav22
5410 / 4806 / 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     Как это читается по-русски
Ответ Создать тему
Опции темы

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