Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.92/62: Рейтинг темы: голосов - 62, средняя оценка - 4.92
 Аватар для Ryuk
183 / 182 / 56
Регистрация: 10.06.2011
Сообщений: 871

Разница между С и С++

31.08.2013, 19:36. Показов 15824. Ответов 148
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Если не брать во внимание объекты и классы, то разница состоит только лишь в cin, cout и директивах?
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
31.08.2013, 19:36
Ответы с готовыми решениями:

Какая разница между различными сокетами (например, между 775 и 1155)?
Обясните пожалуйста какая разница между сокетами, пример есть сокет 775 и 1155 я понимаю что разем не тот процессора другие но! как насчет...

Разница между 64 и 32
Здравствуйте, уважаемые эксперты, недавно на ноутбуке умер жесткий диск, в сервсисе его сменили, и поставили виндоус 7 хоум премиум....

Разница между == и ===
Разница между == и ===. Как я понял два знака, это для разных типов тоже подходит "1"==1(True), а три знака только для однотипных...

148
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
01.09.2013, 19:42
Студворк — интернет-сервис помощи студентам
ninja2, Нет. Сначала да, С++ был С с классами. Однако, сейчас, это два абсолютно разных языка (несмотря на то, что С++ обратно совместим с С во многих аспектах). Не говоря уже о том, что С11 полностью не совместим с С++, да и совместимость с С99 тоже оставляет желать лучшего.
0
01.09.2013, 21:59

Не по теме:

Мне хочется, чтобы участники форума C++ поучаствовали в ответе на мой вопрос Как быть, C или C++?. Ибо Ваши посты заставили меня задуматься.

0
4866 / 3287 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
01.09.2013, 23:15
Цитата Сообщение от ValeryS Посмотреть сообщение
или вообще нет тела
C++
1
for(int i;i<10;i++);
тело всегда есть, точка с запятой - это пустой оператор в теле цикла

Добавлено через 15 минут
Цитата Сообщение от Убежденный Посмотреть сообщение
- требование размещать переменные в начале функций;
не такое уж и плохое требование
всегда знаешь, какие имена заняты и свободны
если накопилось много имён, нужно провести декомпозицию

Цитата Сообщение от Убежденный Посмотреть сообщение
- необходимость объявлять структуры с typedef;
можно не использовать typedef со структурами
но и установка в заголовочных файлах - тоже не проблема

Цитата Сообщение от Убежденный Посмотреть сообщение
- разные правила приведений для void pointer;
да вообще приведение в C++ более точное, но и более длинное - устанешь писать/читать
лаконичность кода не соблюдается

Цитата Сообщение от Убежденный Посмотреть сообщение
- отсутствие bool
в C99 тип сделали, чтобы было
в C89 используется char; если не читается, можно задефайнить
0
 Аватар для Ryuk
183 / 182 / 56
Регистрация: 10.06.2011
Сообщений: 871
01.09.2013, 23:24  [ТС]
accept, к Дейтелам вы нормально относитесь, если по ним учить С? Или все же могли бы посоветовать что-то от себя?
0
01.09.2013, 23:38

Не по теме:

Цитата Сообщение от Ryuk Посмотреть сообщение
к Дейтелам вы нормально относитесь
я не знаю их, и не знаю, что они написали, кроме книг
для изучения C читай К&R2
для изучения C++ читай Страуструпа
потом можно почитать Прата, у него хорошие упражнения
дальше читай стандарты

1
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,542
Записей в блоге: 1
02.09.2013, 22:49
Цитата Сообщение от Убежденный Посмотреть сообщение
- необходимость объявлять структуры с typedef;
ну так структуры в Си и структуры в С++ не только в этом различны. Тут же можно сказать, что в Си не поддерживается ООПшные фишки в структурах. Но ведь обратное неверно!

В языке С++ поддерживается совместимость Си-объявлениями структур
В языке С не поддерживаются некоторые объявления С++ных структур.
, а значит, в теме структур язык С++ полностью включает в себя язык Си.
0
Эксперт С++
 Аватар для fasked
5045 / 2624 / 241
Регистрация: 07.10.2009
Сообщений: 4,310
Записей в блоге: 5
02.09.2013, 23:09
Цитата Сообщение от accept Посмотреть сообщение
в C89 используется char; если не читается, можно задефайнить
Это будет не одно и тоже.
0
4866 / 3287 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
03.09.2013, 02:38
Цитата Сообщение от fasked Посмотреть сообщение
Это будет не одно и тоже.
по размеру - одно и то же, а кроме размера что он даёт ?
0
Эксперт С++
 Аватар для fasked
5045 / 2624 / 241
Регистрация: 07.10.2009
Сообщений: 4,310
Записей в блоге: 5
03.09.2013, 08:33
Цитата Сообщение от accept Посмотреть сообщение
по размеру - одно и то же, а кроме размера что он даёт ?
Есть тонкая грань в поведении. Самый простой пример:
C
1
2
3
4
5
6
7
8
9
10
11
12
#include <stdbool.h>
#include <stdio.h>
 
int main() {
    bool b = 5;
    printf("%d\n", (int)b); // prints "1"
 
    char c = 5;
    printf("%d\n", (int)c); // prints "5"
 
    return 0;
}
То есть преобразование любого числа в "bool" в результате дает либо 0, либо 1.
6.3.1.2 Boolean type
1 When any scalar value is converted to _Bool, the result is 0 if the value compares equal to 0; otherwise, the result is 1.
Аналогичное работает для указателей, только в случае с целочисленной величиной будет warning, в bool же указатель кастуется без проблем:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdbool.h>
#include <stdio.h>
 
int main() {
    int v = 0;
 
    bool b = &v;
    printf("%d\n", (int)b); // prints "1"
 
    char c = &v;
    printf("%d\n", (int)c); // warning: initialization makes integer from pointer without a cast
 
    return 0;
}
Ну а по разумеру стандарт гарантирует только то, что _Bool должен иметь размер достаточный для хранения 0 и 1, не более того
0
4866 / 3287 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
03.09.2013, 08:52
он его изначально не включил в язык, хотя логические выражения в языке есть

Цитата Сообщение от fasked Посмотреть сообщение
То есть преобразование любого числа в "bool" в результате дает либо 0, либо 1.
а без преобразования что ?
ноль может стать истиной или не ноль - ложью ?

Цитата Сообщение от fasked Посмотреть сообщение
Аналогичное работает для указателей
для указателей можно привести, хотя лучше
C
1
    flag = p != NULL;
Цитата Сообщение от fasked Посмотреть сообщение
Ну а по разумеру стандарт гарантирует только то, что _Bool должен иметь размер достаточный для хранения 0 и 1
но память-то выделяется и sizeof для типа даст размер не меньше единицы
а размер char всегда равен единице (это по стандарту)
0
Почетный модератор
Эксперт С++
 Аватар для SatanaXIII
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
03.09.2013, 09:02
Цитата Сообщение от accept Посмотреть сообщение
тело всегда есть, точка с запятой - это пустой оператор в теле цикла
Не будет ли правильнее сказать, что точка с запятой это оператор, ограничивающий пустой оператор, являющийся телом цикла?
0
Модератор
Эксперт по электронике
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,875
03.09.2013, 09:02
Цитата Сообщение от accept Посмотреть сообщение
а без преобразования что ?
ноль может стать истиной или не ноль - ложью ?
я так понял что истина всегда будет равна 1
хоть там 100 напиши
мой любимый пример

C++
1
2
3
4
5
6
bool b=false;
b++;
b++;
b++;
b++;
int a=(int)b;
a будет равна 1, хоть сколько b++ пиши
0
4866 / 3287 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
03.09.2013, 09:11
Цитата Сообщение от SatanaXIII Посмотреть сообщение
что точка с запятой это оператор, ограничивающий пустой оператор, являющийся телом цикла?
чего ?
точка с запятой является частью оператора (это в C так)
цикл не может быть без тела

Цитата Сообщение от ValeryS Посмотреть сообщение
я так понял что истина всегда будет равна 1
в C истина - это не ноль, там нет двух истин, там есть истина и ложь
0
Модератор
Эксперт по электронике
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,875
03.09.2013, 17:23
Цитата Сообщение от accept Посмотреть сообщение
в C истина - это не ноль, там нет двух истин, там есть истина и ложь
ну и зачем ты мне это рассказываешь?
тебе говорят что true при bool равна 1
C++
1
2
bool b=true;
int a=(int) b;
a будет равна 1, а не любому ненулевому числу
0
4866 / 3287 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
03.09.2013, 20:42
Цитата Сообщение от ValeryS Посмотреть сообщение
тебе говорят что true при bool равна 1
а ты не думал, зачем это нужно ?
зачем вводить новый тип, если можно обойтись без него
0
Модератор
Эксперт по электронике
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,875
03.09.2013, 20:57
Цитата Сообщение от accept Посмотреть сообщение
зачем вводить новый тип, если можно обойтись без него
а зачем ввели?
0
4866 / 3287 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
03.09.2013, 21:12
Цитата Сообщение от ValeryS Посмотреть сообщение
а зачем ввели?
в C ? да чтобы было, разработкой занимается комитет
а изначально его не было, это было потому, что лучше сделать меньше, чем больше
0
Эксперт С++
 Аватар для fasked
5045 / 2624 / 241
Регистрация: 07.10.2009
Сообщений: 4,310
Записей в блоге: 5
03.09.2013, 22:13
Цитата Сообщение от accept Посмотреть сообщение
а ты не думал, зачем это нужно ?
зачем вводить новый тип, если можно обойтись без него
Тот же Торвальдс считает, что _Bool от лукавого и я с ним в этом плане согласен. Но сейчас речь о том, что поведение у _Bool и у char различно, а вовсе не о том, надо оно кому-то или нет.
И опять же стандарт говорит:
While the number of bits in a _Bool object is at least CHAR_BIT, the width (number of sign and value bits) of a _Bool may be just 1 bit.
Еще одно отличие:
NaNs do not compare equal to 0 and thus convert to 1.
C
1
2
3
4
5
6
7
8
9
10
11
#include <stdbool.h>
#include <stdio.h>
 
int main() {
        float v = 0. / 0.;
        bool b = v;
        char c = v;
 
        printf("%d %d\n", (int)b, (int)c);
        return 0;
}
Поэтому с точки зрения комитета _Bool довольно сильно отличается от char.
P.S.: если долго инкрементировать char возникнет переполнение, а это UB
0
4866 / 3287 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
03.09.2013, 22:46
Цитата Сообщение от fasked Посмотреть сообщение
если долго инкрементировать char возникнет переполнение
кто его будет инкрементировать ?

Цитата Сообщение от fasked Посмотреть сообщение
Но сейчас речь о том, что поведение у _Bool и у char различно, а вовсе не о том, надо оно кому-то или нет.
нет, речь о том, что bool - необходимый тип
я говорю, что его можно заменить через char

в C вместо трёх ключевых слов bool, true, false, есть одно - char
что там понадобавляли, так этим никто не пользуется
кому надо, подключит заголовок, в котором уже всё есть

то есть его нет, потому что в нём нет необходимости

пример приведи нормальный какой-нибудь
0
Модератор
Эксперт по электронике
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,875
03.09.2013, 23:01
Цитата Сообщение от fasked Посмотреть сообщение
если долго инкрементировать char возникнет переполнение, а это UB
не поверишь если int инкрементировать тоже будет переполнение
и никакого UB
если char то после 127 будет -128
а если unsigned char то после 255 будет 0
Это если char 8 битный
но в любом случае max+1=min
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
03.09.2013, 23:01

Разница между 42.1 и 13.2?
Смотрел на сайте две версии 42.1 только 64 битные, а 13.2 и 32 и 64, но разницы не могу понять, что только биты? Добавлено через 2...

разница между C# и C++
Здравствуйте! Может ли кто-нибудь досказать по пунктам разницу между C++ и C# их приоритеты

Разница между
Разница между gameObject и GameObject?

Разница между * и all
В чем разница между select * from table1 и select all &lt;список_полей&gt; from table1? Именно в пределах данной конструкции. Почему, если я...

Разница между != и <>?
есть ли разница между операторами != и &lt;&gt;, или они полностью эквивалентны? или &lt;&gt; это эквивалент !== в javascript?


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

Или воспользуйтесь поиском по форуму:
120
Ответ Создать тему
Новые блоги и статьи
сукцессия 30. Фосфорный и азотный замки по "честному" закону лимитирования Либиха
anaschu 16.07.2026
Основные достижения за последние дни 1. Механизм отложенного высвобождения фосфора Добавлен специальный пул для медленного разложения меланизированных гиф ЕСМ Реализована разная скорость. . .
Запрет пометки на удаление и отмены проведения
Maks 16.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "ПутевойЛист" разработанного в КА2. Задача: запретить помечать на удаление и отменять проведения путевого листа при условии, если он сдан. . .
Как надо было делать правильно - вообще не слушать ИИ, его дело - текст.
Hrethgir 15.07.2026
А вообще надо было делать не так, чтобы не исправлять ошибку https:/ / www. cyberforum. ru/ blogs/ 223907/ 10996. html , правильно было : удалил кнопку, а потом добавил её. Всё это стресс конечно. Почему?. . .
Знаете, от чего появляется стресс?
kumehtar 15.07.2026
Стресс появляется оттого, что вы, зная как поступить правильно, делаете наоборот. Ларри Уингет
Нас бьют, а мы крепчаем? Какая чушь!
kumehtar 15.07.2026
Вот это вот бытующее мнение, что человек меняется только под действием проблем, всегда считал вредоносным. Поверь, от проблем у людей появляются не изменения, а нервное расстройство и ПТСР. А. . .
сукцессия 29. Переход от одних деревьев на другие делать более или менее вероятностным?
anaschu 12.07.2026
Насколько смена типов микоризы — исключительное событие в двухвековой сукцессии? Оценка вероятности в пространстве параметров В текущей версии модели успешно реализован ключевой механизм. . .
сукцессия 27. Думаю, как переделывать уже написанную статью с планами на сукцессию.
anaschu 12.07.2026
Анализ соответствия модели требованиям Реализованные компоненты: Механизм закисления почвы через протонную помпу Конкуренция между типами микориз pH как триггер сукцессии C/ P соотношение. . .
Сукцессия 26. Мат модель создана.
anaschu 12.07.2026
Модель смены растительных сукцессий посредством управления грибами работает внутри небольшой ячейки почвы, восстанавливающейся после пожара, где ненадолго бывшее царство хвойных снова захватили. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru