Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.94/18: Рейтинг темы: голосов - 18, средняя оценка - 4.94
 Аватар для Wiiiiijjj
19 / 19 / 18
Регистрация: 25.08.2014
Сообщений: 186

Как это работает? Я хочу спросить как работает C++ и где можно про него почитать

11.10.2014, 14:57. Показов 4095. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет, котоны. Заранее благодарю. Это будет моих общих вопросов нить, т.к. создавать целую ветку для каждого нецелесообразно. Я хочу спросить как работает C++ и где можно про него почитать. Да, вопрос странный.

У меня просто возникают странные ощущения, когда я пишу код, который не могу понять как работает. Вроде и понятно, и нет.
Вот проект, вот он что-то считывает/вычисляет/выводит в командную строку. Но почему он это делает? Как происходит компиляция, на основе чего? У меня на компьютере .exe работет — на другом нет. Насколько мой код кроссплатформенен? Как работают все эти подключаемые мной библиотеки? Почему можно выводить как printf(), а можно как cout? Почему решили использовать в cout и cin побитовый сдвиг? Одно и тоже ли int a[] и int *a? Почему в условном операторе имеет место быть присваивание?
1
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.10.2014, 14:57
Ответы с готовыми решениями:

Где можно почитать про списки на C++?
Подскажите пожалуйста или поделитесь полезной литературой) чтобы доступно и понятно было) Заранее огромное вам спасибо:)

Где можно почитать про списки на C/C++?
Ну, вопрос, собственно, максимально отражен в теме: "Где можно почитать про списки на C/C++?" Хочу поподробнее разобраться в этой...

Подскажите пожалуйста где можно почитать про структуры
Подскажите пожалуйста где можно почитать про структуры Добавлено через 1 минуту Структуры – это составные типы данных, построенные с...

16
3258 / 2060 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
11.10.2014, 15:18
Лучший ответ Сообщение было отмечено MrGluck как решение

Решение

Некоторые вопросы сформулированы таким образом, что непонятно как на них отвечать. Так и просятся капитанские ответы, которые фактически ничего не дадут автору. Ну можно попробовать по порядку...
Цитата Сообщение от Wiiiiijjj Посмотреть сообщение
Я хочу спросить как работает C++ и где можно про него почитать
В книгах же.
Цитата Сообщение от Wiiiiijjj Посмотреть сообщение
У меня просто возникают странные ощущения, когда я пишу код, который не могу понять как работает.
Значит, не хватает базовых знаний. Продолжаем читать книги и практиковаться.
Цитата Сообщение от Wiiiiijjj Посмотреть сообщение
Вот проект, вот он что-то считывает/вычисляет/выводит в командную строку. Но почему он это делает?
Потому что именно это написано в исходнике.
Цитата Сообщение от Wiiiiijjj Посмотреть сообщение
Как происходит компиляция, на основе чего?
Программа на С++ транслируется в машинный код. Говоря так, я выкидываю практические все этапы компиляции. Общие сведения есть в любой книге по С++. Если интересует построение компиляторов - тоже есть спец книги.
Цитата Сообщение от Wiiiiijjj Посмотреть сообщение
У меня на компьютере .exe работет — на другом нет.
Например, потому что бинарь был слинкован с динамической библиотекой, которая отсутствует на целевой машине.
Цитата Сообщение от Wiiiiijjj Посмотреть сообщение
Насколько мой код кроссплатформенен?
Определяется самим кодом. Как минимум, использованием системных вызовов, специфичных для ОС/платформы.
Цитата Сообщение от Wiiiiijjj Посмотреть сообщение
Как работают все эти подключаемые мной библиотеки?
Какие "эти все" и какие аспекты функционирования интересуют? В любом случае, см в документацию.
Цитата Сообщение от Wiiiiijjj Посмотреть сообщение
Почему можно выводить как printf(), а можно как cout?
printf перекочевал в С++ из стандартной библиотеки языка Си. Объект std::cout - часть стандартной библиотеки С++.
Цитата Сообщение от Wiiiiijjj Посмотреть сообщение
Почему решили использовать в cout и cin побитовый сдвиг?
Разработчики библиотеки решили, что помещение в поток будет выглядеть наиболее семантично с использованием этого оператора.
Цитата Сообщение от Wiiiiijjj Посмотреть сообщение
Одно и тоже ли int a[] и int *a?
Смотря где.
Цитата Сообщение от Wiiiiijjj Посмотреть сообщение
Почему в условном операторе имеет место быть присваивание?
В условном операторе может присутствовать выражение, результат которого может быть неявно приведен к bool.
2
 Аватар для Wiiiiijjj
19 / 19 / 18
Регистрация: 25.08.2014
Сообщений: 186
11.10.2014, 15:31  [ТС]
Цитата Сообщение от 0x10 Посмотреть сообщение
>У меня на компьютере .exe работет — на другом нет.
Например, потому что бинарь был слинкован с динамической библиотекой, которая отсутствует на целевой машине.
Поподробнее.


Цитата Сообщение от 0x10 Посмотреть сообщение
>Насколько мой код кроссплатформенен?
Определяется самим кодом. Как минимум, использованием системных вызовов, специфичных для ОС/платформы.
Как же сделать кроссплатформенным?
0
3258 / 2060 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
11.10.2014, 15:44
Цитата Сообщение от Wiiiiijjj Посмотреть сообщение
Поподробнее.
На всякий случай: я не представляю почему в Вашем конкретном случае бинарь "не работает" на другой машине. Потому что недостаточно информации для диагностики. Просто в большинстве случаев на форуме народ собирает одни и те же грабли: линкуют программу с динамической рантайм библиотекой (грубо говоря, в бинарь помещается только ссылка на библиотеку). Статическая же линковка - полное включение всего кода библиотеки в результирующий исполняемый файл. Настраивается в параметрах проекта. Документация - http://msdn.microsoft.com/en-u... t1wy3.aspx
Кто работает под виндой, скажет конкретнее и подробнее.

Добавлено через 1 минуту
Цитата Сообщение от Wiiiiijjj Посмотреть сообщение
Как же сделать кроссплатформенным?
Варианты:
1. Не использовать системные вызовы в своем коде. Функционал компенсировать библиотеками/фреймворками (stl, boost, Qt, POCO, etc)
2. Писать несколько вариантов одного и того же кода: под каждую платформу. Фактически библиотеки из первого пункта так и реализованы.
1
 Аватар для Wiiiiijjj
19 / 19 / 18
Регистрация: 25.08.2014
Сообщений: 186
11.10.2014, 15:53  [ТС]
Цитата Сообщение от 0x10 Посмотреть сообщение
Писать несколько вариантов одного и того же кода: под каждую платформу. Фактически библиотеки из первого пункта так и реализованы.
Т.е. если я статически отлинкую прогу — будут включены все библиотеки с вариантами под все платформы?


Да, и еще, мне интересно как именно работают самые стандартные вещи — как cout выводит данные в консоль, например?
0
3258 / 2060 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
11.10.2014, 16:13
Цитата Сообщение от Wiiiiijjj Посмотреть сообщение
Т.е. если я статически отлинкую прогу — будут включены все библиотеки с вариантами под все платформы?
Сейчас я говорю только о линковке рантайм библиотеки.
И одной кнопкой под все платформы вот так собрать не получится. Это сборка под конкретную целевую платформу, которая определяется компилятором. Для других платформ нужно собирать отдельно. Может измениться:
1. ОС. Как следствие, формат исполняемого файла, системные вызовы, разрядность.
2. Железо. Вместе с ним - набор интрукций процессора.

Цитата Сообщение от Wiiiiijjj Посмотреть сообщение
Да, и еще, мне интересно как именно работают самые стандартные вещи — как cout выводит данные в консоль, например?
На низком уровне там в любом случае будет системный вызов вывода данных в стандартный поток вывода.
1
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
11.10.2014, 16:25
Цитата Сообщение от Wiiiiijjj Посмотреть сообщение
Почему в условном операторе имеет место быть присваивание?
Покажи.

Добавлено через 4 минуты
Цитата Сообщение от Wiiiiijjj Посмотреть сообщение
Поподробнее.
Вообще то это тебе надо изъясняться подробнее.

Добавлено через 3 минуты
Цитата Сообщение от Wiiiiijjj Посмотреть сообщение
Т.е. если я статически отлинкую прогу — будут включены все библиотеки с вариантами под все платформы?
Нет. Если ты пристегнешь топорище к руке, то потащишь за собой все варианты молотков, пил, топоров, свёрел и даже станков?
0
 Аватар для Wiiiiijjj
19 / 19 / 18
Регистрация: 25.08.2014
Сообщений: 186
11.10.2014, 16:58  [ТС]
Цитата Сообщение от taras atavin Посмотреть сообщение
Покажи.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
 
using namespace std;
 
int main()
{
    int a = 0;
 
    if (a = 0)
        cout << "a = 0" << endl;
 
    if (a = a)
        cout << "a = a" << endl;
 
    if (a = 1)
        cout << "a = 1" << endl;
 
    if (a = a)
        cout << "a = a" << endl;
 
    return 0;
}
Цитата Сообщение от taras atavin Посмотреть сообщение
Нет. Если ты пристегнешь топорище к руке, то потащишь за собой все варианты молотков, пил, топоров, свёрел и даже станков?
Интересная аналогия. Как же происходит линковка? Все что ищется — связано с командной строкой и компиляцией в ней со всякими параметрами. Можно как-нибудь компилятор настроить из под среды? IDE — QtCreator.
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
11.10.2014, 17:01
Не правильно. Здесь должна быть ==, а не =.
C++
1
2
3
4
5
6
7
8
9
10
using namespace std;
 
int main()
{
 int a;
 std::cin>>a;
 if (a == 0) std::cout << "a = 0" << std::endl;
 if (a == 1) std::cout << "a = 1" << std::endl;
    return 0;
}
.

Добавлено через 29 секунд
Цитата Сообщение от Wiiiiijjj Посмотреть сообщение
Как же происходит линковка?
Читай специальную литературу.
0
 Аватар для Wiiiiijjj
19 / 19 / 18
Регистрация: 25.08.2014
Сообщений: 186
11.10.2014, 17:46  [ТС]
Да, такой вот еще вопрос.
В чем преимущество try..throw..catch от обычных условных конструкций?

Не по теме:

Цитата Сообщение от taras atavin Посмотреть сообщение
Не правильно
Правильно “неправильно”

0
Неэпический
 Аватар для Croessmah
18146 / 10730 / 2066
Регистрация: 27.09.2012
Сообщений: 27,030
Записей в блоге: 1
11.10.2014, 17:47
Цитата Сообщение от Wiiiiijjj Посмотреть сообщение
В чем преимущество try..throw..catch от обычных условных конструкций?
а в чем они похожи?
0
3258 / 2060 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
11.10.2014, 17:51
Цитата Сообщение от Wiiiiijjj Посмотреть сообщение
В чем преимущество try..throw..catch от обычных условных конструкций?
Это "слегка" разные вещи.
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
11.10.2014, 17:55
Цитата Сообщение от Wiiiiijjj Посмотреть сообщение
В чем преимущество try..throw..catch от обычных условных конструкций?
В том, что можно двумя операторами отловить ошибку времени исполнения по всему телу функции и компактно её обработать, а не раскидывать ифы где попало.
1
 Аватар для Wiiiiijjj
19 / 19 / 18
Регистрация: 25.08.2014
Сообщений: 186
11.10.2014, 18:07  [ТС]
А я правильно понимаю, если в блоке try случается, например, деление на ноль, автоматически генерируется код ошибки?
0
3258 / 2060 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
11.10.2014, 18:13
Цитата Сообщение от Wiiiiijjj Посмотреть сообщение
В чем преимущество try..throw..catch от обычных условных конструкций?
Деление на ноль - источник аппаратного прерывания, а не программного исключения.
0
 Аватар для Wiiiiijjj
19 / 19 / 18
Регистрация: 25.08.2014
Сообщений: 186
11.10.2014, 18:40  [ТС]
А какие-нибудь ошибки генерятся сами?
0
3258 / 2060 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
11.10.2014, 18:42
Цитата Сообщение от Wiiiiijjj Посмотреть сообщение
А какие-нибудь ошибки генерятся сами?

Не по теме:

Ошибки обычно генерят программисты, когда пишут код. Потом исправляют эти ошибки и генерят новые.


Магии нет, ничто не происходит само по себе. Если где-то вылетает исключение - значит, оно сгенерено.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
11.10.2014, 18:42
Помогаю со студенческими работами здесь

Посоветуйте где можно подробнее почитать про использование указателей на функциях
Немогу найти нормальную информацию про эту тему, может есть люди которые знают где...

Где можно почитать о том, как устроена Windows? Как она работает и т.д.?
Есть книги такие?

Что такое T4 script и где про него можно почитать?
В правильную ветку форума написал или нет не знаю. Но разобраться в этом вопросе для меня важно. Что вообще такое T4 скрипт? Где про него...

Хочу узнать про то как работает компютер...
В этом деле полный чайник, но хочу узнать как работает компютер (операционная система, шина и т.д.). Можете посоветовать книжку?

Как это назвать или где почитать как это сделать?
Вот как выглядит моя цель - http://cs623921.vk.me/v623921477/38005/2W46UJsY3nM.jpg При нажатии на стрелки происходит плавный переход. ...


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru