Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826

Имеет ли данный код переменную

01.04.2016, 11:21. Показов 642. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день,

Цитата Сообщение от zss
Данный код содержит константу 0 и переменную int
C++
1
2
3
4
int main()
{
   return 0;
}
Почему возвращаемое значение стало возвращаемой переменной ?


Доводы, что то переменная:
Цитата Сообщение от Olej
Переменная типа int реально существует и ей при вызове зарезервировано место в стеке для возврата значения результата функции. Только ей не присвоено явного имени за ненадобностью. Но в ассемблере (в вставке инлайновой в GCC, например), вы можете обратиться и к этой переменной тоже через регистры SS, BS, ES - это тоже всё имена.
Я считаю, что уже по определению "возвращаемое значение функции" опровергает, что там переменная. То как это организовано на низком уровне и раскрытие этой информации прям нарушение абстракции и нету гарантии, что там будет всегда переменная, а не константа к примеру и т.д. Как-то я не согласен с слова эксперта С++ zss - у кого какие идеи?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
01.04.2016, 11:21
Ответы с готовыми решениями:

Какую кодировку имеет данный файл
Я не нашел нужную категорию для размещения темы (не кидайтесь помидорами, на дворе 2016). Какую кодировку имеет файл ->...

Подскажите, имеет ли смысл ремапить данный HDD?
Подскажите имеет ли смысл прогонять Hd,Victorieу read+remap ,если Сrystal Disc info показывает 2000 бэд секторов.

Определить, имеет ли данный ациклический орграф корень. Список смежности
Корень ациклического графа-такая вершина u,что из нее существуют пути в каждую из остальных вершин орграфа. Определить, имеет ли данный...

14
 Аватар для Kastaneda
5232 / 3205 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
01.04.2016, 14:14
Тонкий вопрос, а чем константа отличается от переменной? Если не считать, что переменная - это то, что может менять свое значение, допустим переменная это кусок памяти. И если отбросить, что константа может быть впилена в ассемблер как есть (т.е. без выделения памяти).
1
 Аватар для Olej
322 / 170 / 24
Регистрация: 25.03.2012
Сообщений: 712
01.04.2016, 14:21
Цитата Сообщение от rikimaru2013 Посмотреть сообщение
нету гарантии, что там будет всегда переменная, а не константа к примеру
Оно не может быть константой...
Если бы у нашей бабушки были яйца, то это была бы уже не бабушка, а дедушка.

Вы этой "константе" обязаны присвоить значение оператором return ... а несколькими return из разных мест функции ещё и будете пытаться присваивать самые разные значения.
0
 Аватар для avgoor
1550 / 877 / 179
Регистрация: 05.12.2015
Сообщений: 2,555
01.04.2016, 14:23
Ассемблерный код, имхо, можно вообще не рассматривать, т.к. компилятор может много чего соптимзировать.
0
 Аватар для Kastaneda
5232 / 3205 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
01.04.2016, 14:26
На самом деле вопрос не корректен, константа и переменная - это термины из разных областей, как мягкое и теплое. Вопрос "оно мягкое или теплое?" можно обсуждать бесконечно.
0
 Аватар для Olej
322 / 170 / 24
Регистрация: 25.03.2012
Сообщений: 712
01.04.2016, 14:48
Цитата Сообщение от avgoor Посмотреть сообщение
т.к. компилятор может много чего соптимзировать.
Может.
Соптимизировать.
Только вот чего компилятор не может - это изменить формат кадра стека вызова. Потому что это определяется "C соглашениями о вызовах". А вот если вы перейдёте на другой язык программирования, то там это будет определяться и другими соглашениями о вызовах.

P.S. А вообще, парни, вам самим не кажется, что это тема - порядка первоапрельской шутки (или анонизма, если кому так понятнее), и обсуждать такое можно только в порядке стёба...
0
 Аватар для avgoor
1550 / 877 / 179
Регистрация: 05.12.2015
Сообщений: 2,555
01.04.2016, 14:50
Olej, и где же в стеке возвращаемое значение int? Подсказка - в стеке его нет.
0
 Аватар для Kastaneda
5232 / 3205 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
01.04.2016, 15:01
Цитата Сообщение от Olej Посмотреть сообщение
Потому что это определяется "C соглашениями о вызовах". А вот если вы перейдёте на другой язык программирования, то там это будет определяться и другими соглашениями о вызовах.
Это определяет ABI системы, на x86 был зоопарк конвенций, на x86_64 разработчики, к счастью, решили использовать всего одно соглашение. Правда оно отличается между Windows/Linux, но суть одна.

Добавлено через 1 минуту
Цитата Сообщение от avgoor Посмотреть сообщение
Подсказка - в стеке его нет.
Без указания архитектуры утверждение лишено смысла, т.к. например на Sparc'о подобном процессоре, с которым мне доводилось работать, оно как раз в стеке

Добавлено через 7 минут

Не по теме:

Цитата Сообщение от Kastaneda Посмотреть сообщение
т.к. например на Sparc'о подобном процессоре, с которым мне доводилось работать, оно как раз в стеке
немного соврал, давно это было. Там есть такая штука, называется "стек регистров", вот в этом стеке содержится возвращаемое значение. Сложно объяснить что это, т.к. нет прямой параллели с x86

0
 Аватар для avgoor
1550 / 877 / 179
Регистрация: 05.12.2015
Сообщений: 2,555
01.04.2016, 15:13
Цитата Сообщение от Kastaneda Посмотреть сообщение
нет прямой параллели с x86
Есть нечто похожее: стек в FPU.
Цитата Сообщение от Kastaneda Посмотреть сообщение
Без указания архитектуры утверждение лишено смысла
Я никогда не слышал, чтоб хоть где-нибудь возврат происходил не через регистр. Да и представить такую необходимость сложно.

Добавлено через 4 минуты
По теме. Переменная должна быть объявлена. Где здесь объявление переменной?
1
 Аватар для Kastaneda
5232 / 3205 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
01.04.2016, 15:17
Цитата Сообщение от avgoor Посмотреть сообщение
Я никогда не слышал, чтоб хоть где-нибудь возврат происходил не через регистр. Да и представить такую необходимость сложно.
Пример может не совсем честный, но JVM имеет стековую архитектуру и там возврат происходит через стек, потому как регистров просто нет (есть 2 виртуальных регистра, но у них свои роли). Есть железячные реализации JVM, там соответственно тоже все на стеке.
0
 Аватар для avgoor
1550 / 877 / 179
Регистрация: 05.12.2015
Сообщений: 2,555
01.04.2016, 15:21
Kastaneda, Теоретически, можно создать виртуальный функциональный процессор, где вообще не будет ни регистров ни переменных. Можно даже воплотить его в железе. Я все-таки о реальных системах, а исполнять код С++ на JVM - знать толк.
0
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
01.04.2016, 16:27  [ТС]
Цитата Сообщение от Olej Посмотреть сообщение
Вы этой "константе" обязаны присвоить значение оператором return ... а несколькими return из разных мест функции ещё и будете пытаться присваивать самые разные значения.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
 
int main()
{
   int x = 13;
   std::cin >> x;
   const int a = [=]() ->int 
   {
      if(x > 10)
         return 1;
      else
         return 4;
   }();
 
 
   std::cout << a << std::endl;
   return 0;
}
Olej, и если вам не нравится тема - просто не пишите в ней) Есть люди, что считают что при
C++
1
T foo();
Есть некоторая переменная T с которой мы работаем - я же говорю это не так. Ищу правду в дискусии.
0
116 / 106 / 51
Регистрация: 29.03.2016
Сообщений: 480
01.04.2016, 16:35
переменная - символическое название конкретного участка памяти
сам участок памяти не является переменной
тип также не является переменной
0
 Аватар для avgoor
1550 / 877 / 179
Регистрация: 05.12.2015
Сообщений: 2,555
01.04.2016, 17:05
Цитата Сообщение от rikimaru2013 Посмотреть сообщение
Есть некоторая переменная T с которой мы работаем - я же говорю это не так.
Скорее всего, так считают те, кто начинал с паскаля, хотя даже в паскале никакой переменной возврата нет, несмотря на синтаксис.
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
12919 / 6787 / 1817
Регистрация: 18.10.2014
Сообщений: 17,169
01.04.2016, 17:36
Цитата Сообщение от rikimaru2013 Посмотреть сообщение
Почему возвращаемое значение стало возвращаемой переменной ?
Код не содержал бы такой переменной, даже если бы возвращаемое значение было размером в 10К и возвращалось бы через специальную область памяти в каком-нибудь ABI. Все эти внутренние вопросы к переменным языка никакого отношения не имели, не имеют и иметь не будут. Поэтому разглагольствования про возвращение значения, как переменную - это тролль-белиберда. С таким же успехом можно втирать тут про ворох "переменных" в системных структурах состояния потока, а также массу служебных переменных, предназначенных для обслуживания динамической памяти. Все они есть - но к языковому понятию "переменной" никаким боком не относятся.

Если кому-то захочется притащить в этот код осмысленные утверждения о существовании в нем переменных, то это будут объекты из стандартной библиотеки - как errno, так и cin и cout. Такая схоластика еще может иметь какую-то техническую ценность, ибо такие переменные действительно есть. А про попытку демагогически представить возвращаемое значение, как "переменную" - вас просто троллят.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
01.04.2016, 17:36
Помогаю со студенческими работами здесь

Узнать кто имеет получает доступ к файлу в данный момент
Ситуация следующая: Есть сервер до управлением Windows 2003. Есть клиентский машины. На сервере располагаются общие ресурсы для всех...

Проверьте или данный прямоугольный массив имеет горизонтальную ось симметрии
пытался-пытался и никак, всегда какие-то ошибки. буду рад если поможете )

Проверьте или данный прямоугольный массив NxM имеет горизонтальную ось симметрии?
Проверьте или данный прямоугольный массив NxM имеет горизонтальную ось симметрии буду благодарен за помощь :D

Найти значения параметра а, при которых данный многочлен имеет кратные корни
f(x)=(x^2-(2a-3)x-6a)(x^2-(3a+2)x+6a)(x-3) привел к следующему виду f(x)=(x-a)(x+3)(x-3a)(x-2)(x-3) суть задачи при каких...

TNS-12514: Прослушиватель в данный момент не имеет данных о службе, запрашиваемой в дескрипторе соединения
Всем доброго времени суток, проблема следующая, придя сегодня на работу обнаружил что база упала, стал перезапускать службы и т.д, но...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru