С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.90/29: Рейтинг темы: голосов - 29, средняя оценка - 4.90
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
1

Си является подмножеством С++?

12.11.2012, 22:54. Показов 5380. Ответов 21
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Занимаюсь переводом книги по плюсам.

"Created by Bjarne Stroustrup, C++ is a direct descendant of the C language. In fact, C++ retains almost all of C as a subset. However, C++ offers better ways to do things and some brand-new capabilities, too."

"Язык программирования С++, созданный Бьерном Страуструпом, является прямым потомком языка Си. Фактически С++ включает в себя практически весь Си как подмножество, но вместе с тем предоставляет более эффективные средства для решения задач, а также обладает некоторыми принципиально новыми возможностями."

На самом деле этот кусок до сих пор обсуждается на Мультитране (кейворд "to do things" - кому интересно, можете глянуть, но флуда там дофига). Честно говоря, не думал, что так зацепятся за "подмножество"

Основной аргумент:
Как можно назвать язык программирования "подмножеством" другого языка?! Можно сказать, что "практически язык является расширенным вариантом другого языка", "язык почти полностью включает в себя структуру/функционал другого языка". Ну или в крайнем случае - так, как предложила Игишева. Ибо подмножеством может быть только алфавит языка.
И я что-то задумался, насчет своего варианта...

Хотелось бы услышать Вашего мнения, специалисты


Благодарю!
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
12.11.2012, 22:54
Ответы с готовыми решениями:

Определить, является ли множество X подмножеством множества Y
Рассматривая массивы X, Y и Z как представление некоторых множеств из объектов типа индекс (X=TRUE,...

Функция проверяющая, является ли массив В подмножеством массива А
#include <iostream> #include <cstdlib> #include <ctime> #include <vector> using namespace std;...

Установить, является ли одно множество подмножеством другого
помогите пожалуста))) 1)Создать множества А,В,С- псевдослучайных чисел из натурального ряда;...

Проверить, является ли один массив подмножеством другого
Здравствуйте! Опять нужна помощь. Задание: Написать функцию, принимающую в качестве аргумента,...

21
4264 / 3323 / 925
Регистрация: 25.03.2012
Сообщений: 12,520
Записей в блоге: 1
12.11.2012, 22:58 2
Тоже мне, тема для обсуждения.
Надеюсь, употребляя слово "ЯЗЫК", ты не имел в виду язык с точки зрения лингвистов-языковедов? Мы ж о ЯП говорим!
1
23 / 21 / 4
Регистрация: 03.11.2010
Сообщений: 169
12.11.2012, 22:59 3
язык почти полностью включает в себя структуру/функционал другого языка
Я бы так сказал.
1
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
12.11.2012, 23:00  [ТС] 4
Kuzia domovenok,

Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
ты не имел в виду язык с точки зрения лингвистов-языковедов
Нет, не имел :-)

А если по теме - можно так сказать?
0
Модератор
Эксперт по электронике
8950 / 6716 / 921
Регистрация: 14.02.2011
Сообщений: 23,712
12.11.2012, 23:04 5
я бы тоже сказал
Цитата Сообщение от The_Immortal Посмотреть сообщение
"язык почти полностью включает в себя структуру/функционал другого языка".
ибо подмножество подразумевает что С полностью вошел в плюсы, без каких либо изменений
1
~ Эврика! ~
1257 / 1006 / 74
Регистрация: 24.07.2012
Сообщений: 2,002
12.11.2012, 23:27 6
Это родственные языки. Но тем не менее, не всякий валидный код на Си является валидным кодом на Си++. И наоборот.
1
4264 / 3323 / 925
Регистрация: 25.03.2012
Сообщений: 12,520
Записей в блоге: 1
12.11.2012, 23:38 7
Цитата Сообщение от ~OhMyGodSoLong~ Посмотреть сообщение
Это родственные языки. Но тем не менее, не всякий валидный код на Си является валидным кодом на Си++. И наоборот.
Можно пример, пожалуйста? Я верю, что это так. Постоянно кажется, что где-то я уже слышал это, но ни одного примера в голову не лезет. Я знаю что Си более удачен с точки зрения преобразования типов и способен неявно преобразовывать то, на что С++ будет делать замечания и ошибки. Но кроме этого ничего в голову не лезет.
0
Higher
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
12.11.2012, 23:39 8
Даже на этот вопрос можно развернуть холивар.
Мое мнение - true, так как С++ содержит в себе все возможности С, и небольшие различия в синтаксисе этого не отменяют.
Kuzia domovenok, примеров десятки, практически все они есть в книге мертвого страуса. Сходу вспомнился тип символьных литералов, плюсовый дефайн, запрет на
C++
1
T *x = (void *) y
в плюсах, правило неявного int в с, аргументы main(в с main() означает любое количество аргументов, в плюсах - ни одного).
0
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
12.11.2012, 23:45 9
Kuzia domovenok, в Си можно рекурсивно вызывать main, С++, вроде, такое не проглотит.
0
Неэпический
18112 / 10699 / 2062
Регистрация: 27.09.2012
Сообщений: 26,944
Записей в блоге: 1
12.11.2012, 23:47 10
Цитата Сообщение от Toshkarik Посмотреть сообщение
в Си можно рекурсивно вызывать main, С++, вроде, такое не проглотит.
Попробовал ради интереса - глотает и не ругается, до тех пор, пока стек тютю (VS2012)
0
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
12.11.2012, 23:49 11
Croessmah, Наверно зависит от компилятора. Так как стандартом запрещено вызывать main рекурсивно.
0
Модератор
Эксперт по электронике
8950 / 6716 / 921
Регистрация: 14.02.2011
Сообщений: 23,712
12.11.2012, 23:50 12
Цитата Сообщение от Croessmah Посмотреть сообщение
Попробовал ради интереса - глотает и не ругается, до тех пор, пока стек тютю (VS2012)
а файл расширения c или cpp ?
0
Неэпический
18112 / 10699 / 2062
Регистрация: 27.09.2012
Сообщений: 26,944
Записей в блоге: 1
12.11.2012, 23:52 13
Цитата Сообщение от Toshkarik Посмотреть сообщение
Так как стандартом запрещено вызывать main рекурсивно.
g++ тоже глотает...в общем без разницы =)

Добавлено через 30 секунд
Цитата Сообщение от ValeryS Посмотреть сообщение
а файл расширения c или cpp ?
не волнуйтесь, он cpp =)
0
Higher
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
12.11.2012, 23:53 14
Цитата Сообщение от Croessmah Посмотреть сообщение
Попробовал ради интереса - глотает и не ругается, до тех пор, пока стек тютю (VS2012)
студия не соблюдает стандарт.
Еще парочка различий вспомнилась
-В С struct является именем типа, поэтому ее обязательно писать всегда. В плюсах struct опционален.
-В С++ main по умолчанию возвращает 0.
-В С можно написать
C
1
(0 ? sin : cos)(1.0)
0
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
12.11.2012, 23:55 15
Croessmah, если компилировать с соответствием стандарта, то gcc выдает ошибку:
main.cpp:237:9: error: ISO C++ forbids taking address of function '::main' [-pedantic]
0
4264 / 3323 / 925
Регистрация: 25.03.2012
Сообщений: 12,520
Записей в блоге: 1
12.11.2012, 23:58 16
Цитата Сообщение от diagon Посмотреть сообщение
T *x = (void *) y
а почему это запретили? Зря. Это именно к (void*) относится или так можно в С++?:
C++
1
2
T *x=(T*)y;
void* z=(void*)x;
Добавлено через 1 минуту
Цитата Сообщение от diagon Посмотреть сообщение
-В С struct является именем типа, поэтому ее обязательно писать всегда. В плюсах struct опционален.
Ну это мелочи. Это ещё в сях вечно тайпдефом обходилось.
0
Неэпический
18112 / 10699 / 2062
Регистрация: 27.09.2012
Сообщений: 26,944
Записей в блоге: 1
12.11.2012, 23:59 17
Цитата Сообщение от Toshkarik Посмотреть сообщение
Croessmah, если компилировать с соответствием стандарта, то gcc выдает ошибку:
Тут Вы правы.
0
4264 / 3323 / 925
Регистрация: 25.03.2012
Сообщений: 12,520
Записей в блоге: 1
12.11.2012, 23:59 18
Цитата Сообщение от diagon Посмотреть сообщение
-В С++ main по умолчанию возвращает 0.
то есть для всех моих функций может вылезти ошибка function must return a value, а для main нет?
0
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
13.11.2012, 00:01 19
Kuzia domovenok, можно присвоить любой адрес или указатель, указателю на void. Указатель на void придется явно приводить, что бы присвоить другому указателю ( не на void ). В Си же не нужно явно приводить. Запретили, наверно, из соображения безопасности.

Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
то есть для всех моих функций может вылезти ошибка function must return a value, а для main нет?
Да, return в main можно не писать.
0
Higher
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
13.11.2012, 00:09 20
И еще немного:
-В С можно на месте возвращаемого типа или аргумента функции объявить структуру
-В С можно использовать необъявленные функции
-В С можно использовать goto в обход инициализации переменных
-В С перечислениям можно присваивать целочисленные значения
-В С можно писать типы аргументов функции после объявления, собсно, функции
Т.е. такой код валиден
C
1
2
3
4
void f(a, b, c)
char *a;
double *c;
{ ..
И многое другое. Мне уже надоело :)
0
13.11.2012, 00:09
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
13.11.2012, 00:09
Помогаю со студенческими работами здесь

Указатели: написать функцию, проверяющую, является ли массив В подмножеством массива А
Задача такая: Написать программу, которая содержит функцию, принимающую в качестве аргумента,...

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

Определить, является ли А подмножеством множества В
Написать программу, в которой для конечных упорядоченных множеств реализовать все основные...

Доказать, что множество A является подмножеством B
Доказать, что множество A является подмножеством множества B тогда и только тогда, когда любой...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Блоги программистов
Как перейти с Options API на Composition API в Vue.js
BasicMan 06.01.2025
Почему переход на Composition API актуален В мире современной веб-разработки фреймворк Vue. js продолжает эволюционировать, предлагая разработчикам все более совершенные инструменты для создания. . .
Архитектура современных процессоров
inter-admin 06.01.2025
Процессор (центральный процессор, ЦП) является основным вычислительным устройством компьютера, которое выполняет обработку данных и управляет работой всех остальных компонентов системы. Архитектура. . .
История создания реляционной модели баз данных, правила Кодда
Programming 06.01.2025
Предпосылки создания реляционной модели В конце 1960-х годов компьютерная индустрия столкнулась с серьезными проблемами в области управления данными. Существовавшие на тот момент модели данных -. . .
Полезные поделки на Arduino, которые можно сделать самому
raxper 06.01.2025
Arduino как платформа для творчества Arduino представляет собой удивительную платформу для технического творчества, которая открывает безграничные возможности для создания уникальных проектов. Эта. . .
Подборка решений задач на Python
IT_Exp 06.01.2025
Целью данной подборки является предоставление возможности ознакомиться с различными задачами и их решениями на Python, что может быть полезно как для начинающих, так и для опытных программистов. . . .
С чего начать программировать микроконтроллер­­ы
raxper 06.01.2025
Введение в мир микроконтроллеров Микроконтроллеры стали неотъемлемой частью современного мира, окружая нас повсюду: от простых бытовых приборов до сложных промышленных систем. Эти маленькие. . .
Из чего собрать игровой компьютер
inter-admin 06.01.2025
Сборка игрового компьютера требует особого внимания к выбору комплектующих и их совместимости. Правильно собранный игровой ПК не только обеспечивает комфортный геймплей в современных играх, но и. . .
Обновление сайта www.historian.b­y
Reglage 05.01.2025
Обещал подвести итоги 2024 года для сайта. Однако начну с того, что изменилось за неделю. Добавил краткий урок по последовательности действий при анализе вредоносных файлов и значительно улучшил урок. . .
Как использовать GraphQL в C# с HotChocolate
Programming 05.01.2025
GraphQL — это современный подход к разработке API, который позволяет клиентам запрашивать только те данные, которые им необходимы. Это делает взаимодействие с API более гибким и эффективным по. . .
Модель полного двоичного сумматора с помощью логических операций (python)
AlexSky-coder 04.01.2025
def binSum(x:list, y:list): s=^y] p=x and y for i in range(1,len(x)): s. append((x^y)^p) p=(x and y)or(p and (x or y)) return s x=list() y=list()
Это мы не проходили, это нам не задавали...(аси­­­­­­­­­­­­­­хро­н­н­ы­й счётчик с управляющим сигналом задержки).
Hrethgir 04.01.2025
Асинхронный счётчик на сумматорах (шестиразрядный по числу диодов на плате, но наверное разрядов будет больше - восемь или шестнадцать, а диоды на старшие), так как триггеры прошли тестирование и. . .
Руководство по созданию бота для Телеграм на Python
IT_Exp 04.01.2025
Боты для Телеграм представляют собой автоматизированные программы, которые выполняют различные задачи, взаимодействуя с пользователями через интерфейс мессенджера. В данной статье мы рассмотрим,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru