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

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

11.10.2014, 14:57. Показов 4076. Ответов 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
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,026
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США. Нашел на реддите интересную статью под названием «Кто-нибудь знает, где получить бесплатный компьютер или. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
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 - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru