C vs. C++ (Концепция итераторов в C++, STL и т.д.)

Модератор: Модераторы разделов

nikita Moroz
Сообщения: 54
ОС: Linux

C vs. C++

Сообщение nikita Moroz »

Как в С++ использовать maxint(что надо include, что-бы использовать эту константу?)
Спасибо сказали:
Аватара пользователя
Zeus
Сообщения: 694

Re: C vs. C++

Сообщение Zeus »

Код: Выделить всё

#include<limits>

std::numeric_limits<int>::max();

Как-то так.
Спасибо сказали:
nikita Moroz
Сообщения: 54
ОС: Linux

Re: C vs. C++

Сообщение nikita Moroz »

А нельзя просто values.h подключить?
Спасибо сказали:
v04bvs
Сообщения: 636
ОС: Debian GNU/Linux

Re: C vs. C++

Сообщение v04bvs »

nikita Moroz писал(а):
17.11.2007 17:03
А нельзя просто values.h подключить?

Это не через шаблоны - не круто.
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu

Re: C vs. C++

Сообщение serzh-z »

nikita Moroz писал(а):
17.11.2007 17:03
А нельзя просто values.h подключить?
values.h - вообще устаревший заголовок... вместо него следует подключать limits.h

Ну а поскольку речь идёт о C++, то стоит использовать преимущества его библиотеки - в данном случае std::numeric_limits из "limits".
Спасибо сказали:
v04bvs
Сообщения: 636
ОС: Debian GNU/Linux

Re: C vs. C++

Сообщение v04bvs »

serzh-z писал(а):
17.11.2007 17:21
nikita Moroz писал(а):
17.11.2007 17:03
А нельзя просто values.h подключить?
values.h - вообще устаревший заголовок... вместо него следует подключать limits.h

Ну а поскольку речь идёт о C++, то стоит использовать преимущества его библиотеки - в данном случае std::numeric_limits из "limits".


А можно, для самых маленьких, объяснить чем std::numeric_limits<int>::max() превосходит INT_MAX, кроме времени компиляции? Про использование внутри шаблонов и generic-методов понятно - в данном случае 99% вероятность, что нужна обычная константа.
Спасибо сказали:
Аватара пользователя
Zeus
Сообщения: 694

Re: C vs. C++

Сообщение Zeus »

Чтобы код был плюсовый, а не сишный, наверное :)

Вот это:

Код: Выделить всё

if (c==INT_MAX)
{
};


мне видится кодом на С

а это

Код: Выделить всё

if (c == std::numeric_limits<int>::max())
{
}


C++
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu

Re: C vs. C++

Сообщение serzh-z »

v04bvs, ты предлагаешь в очередной раз начать флейм "C vs. C++"?
Спасибо сказали:
Аватара пользователя
Liksys
Сообщения: 2910

Re: C vs. C++

Сообщение Liksys »

serzh-z, смысла в этом нет, ибо делает по части C++/ООП Python и SmallTalk :)
Спасибо сказали:
v04bvs
Сообщения: 636
ОС: Debian GNU/Linux

Re: C vs. C++

Сообщение v04bvs »

serzh-z писал(а):
17.11.2007 17:46
v04bvs, ты предлагаешь в очередной раз начать флейм "C vs. C++"?



Упаси боже. И в мыслях не было. Я предлагаю решать простые проблемы простыми способами.

Zeus
g++ с тобой не согласен :) Он и то, и то компилирует.
Спасибо сказали:
Аватара пользователя
Zeus
Сообщения: 694

Re: C vs. C++

Сообщение Zeus »

А мне что-то кажется, что если мы пишем плюсовую программу, то мы должны рассчитывать только на #include<limits> и шаблонов из него.
Или я ошибаюсь?
Спасибо сказали:
v04bvs
Сообщения: 636
ОС: Debian GNU/Linux

Re: C vs. C++

Сообщение v04bvs »

Zeus писал(а):
17.11.2007 18:18
А мне что-то кажется, что если мы пишем плюсовую программу, то мы должны рассчитывать только на #include<limits> и шаблонов из него.
Или я ошибаюсь?

Вроде бы стандарт С++ это стандарт С (правда не последний) и плюсовые дополнения. Т.е. используя С++ мы имеем полный С. Да и странно было бы, если бы это было неправдой.
Спасибо сказали:
Аватара пользователя
Liksys
Сообщения: 2910

Re: C vs. C++

Сообщение Liksys »

Zeus писал(а):
17.11.2007 18:18
А мне что-то кажется, что если мы пишем плюсовую программу, то мы должны рассчитывать только на #include<limits> и шаблонов из него.
Или я ошибаюсь?

Согласен, если уж пишешь, то надо придерживаться одного стандарта, а не изобретать костыли или брыть из других языков что-то. C++ вообще говоря вполне самостоятельный и великолепный язык, но жтого многие не знают, поскольку пишут на жуткой смеси C и C++.
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu

Re: C vs. C++

Сообщение serzh-z »

Liksys писал(а):
17.11.2007 18:24
но жтого многие не знают, поскольку пишут на жуткой смеси C и C++.
+1 Увы таких много... :(
Спасибо сказали:
Аватара пользователя
eduard_pustobaev
Сообщения: 2629
Статус: Ленивец
ОС: Arch/Debian.

Re: C vs. C++

Сообщение eduard_pustobaev »

serzh-z писал(а):
17.11.2007 23:30
+1 Увы таких много... :(

Ага. Например я... :)
В дисгармонии со вселенной.
Спасибо сказали:
Аватара пользователя
Uncle_Theodore
Сообщения: 3339
ОС: Slackware 12.2, ArchLinux 64

Re: C vs. C++

Сообщение Uncle_Theodore »

Ребятки... С и С++ -- это разные языки. Чисто для прикола, посмотрите вот на этот код

Код: Выделить всё

#include<stdio.h>
int main()
{
    printf("%s\n", (sizeof('a') == sizeof(char)) ? "C++" : "C");
    return 0;
}

Он знает, как что его скомпилировали, как Сяшную программу или как С++шную.
Смешивать эти два языка -- это як казаты на эдаком суржике, понятно, конечно, но хто ж его знает, шо будэ, если разок не поймут... :)
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: C vs. C++

Сообщение drBatty »

Uncle_Theodore писал(а):
18.11.2007 03:59
printf("%s\n", (sizeof('a') == sizeof(char)) ? "C++" : "C");

Грязный хак. Незаработает ни в хрюше(где я сейчас нахожусь MSVC), ни в моей mandrive(там у русской а два символа)
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
watashiwa_daredeska
Бывший модератор
Сообщения: 4038
Статус: Искусственный интеллект (pre-alpha)
ОС: Debian GNU/Linux

Re: C vs. C++

Сообщение watashiwa_daredeska »

Liksys писал(а):
17.11.2007 18:24
Согласен, если уж пишешь, то надо придерживаться одного стандарта, а не изобретать костыли или брыть из других языков что-то. C++ вообще говоря вполне самостоятельный и великолепный язык, но жтого многие не знают, поскольку пишут на жуткой смеси C и C++.

Не получится. C++ недостаточно самостоятельный, чтобы не брать из C, но реализовано это таким образом, что назвать C++ великолепным -- язык не поворачивается.

Конкретно на счет INT_MAX или std::numeric_limits<int>::max() -- разница только при использовании generic programming. Я, например, в обычном коде предпочитаю INT_MAX, так короче и понятней.
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: C vs. C++

Сообщение drBatty »

watashiwa_daredeska писал(а):
18.11.2007 14:05
Конкретно на счет INT_MAX или std::numeric_limits<int>::max() -- разница только при использовании generic programming. Я, например, в обычном коде предпочитаю INT_MAX, так короче и понятней.

получится. просто ты язык слабо знаешь ;)
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
Zeus
Сообщения: 694

Re: C vs. C++

Сообщение Zeus »

drBatty писал(а):
18.11.2007 14:04
Uncle_Theodore писал(а):
18.11.2007 03:59
printf("%s\n", (sizeof('a') == sizeof(char)) ? "C++" : "C");

Грязный хак. Незаработает ни в хрюше(где я сейчас нахожусь MSVC), ни в моей mandrive(там у русской а два символа)

У меня в Fedora Core 5 "заработало".
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: C vs. C++

Сообщение drBatty »

Zeus писал(а):
18.11.2007 14:19
У меня в Fedora Core 5 "заработало".

ну и что?
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
Zeus
Сообщения: 694

Re: C vs. C++

Сообщение Zeus »

drBatty писал(а):
18.11.2007 14:40
Zeus писал(а):
18.11.2007 14:19
У меня в Fedora Core 5 "заработало".

ну и что?

Ну ты написал, что "не заработает" там-то и там-то.
Я написал, что у меня - заработало.
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu

Re: C vs. C++

Сообщение serzh-z »

drBatty писал(а):
18.11.2007 14:04
Грязный хак. Незаработает ни в хрюше
Причём тут какой-то хак? В C - обычные символьные константы занимают четыре байта, в C++ - один...
Спасибо сказали:
Аватара пользователя
Zeus
Сообщения: 694

Re: C vs. C++

Сообщение Zeus »

serzh-z писал(а):
18.11.2007 18:21
В C - обычные символьные константы занимают четыре байта, в C++ - один...

Честно говоря за 10 лет программёжа на С - первый раз про 4 байта слышу.
Сильно удивлён.
Спасибо сказали:
Аватара пользователя
Liksys
Сообщения: 2910

Re: C vs. C++

Сообщение Liksys »

Я тоже, кстати. Всю жизнь в C sizeof(char) возвращал 1
Спасибо сказали:
v04bvs
Сообщения: 636
ОС: Debian GNU/Linux

Re: C vs. C++

Сообщение v04bvs »

Liksys писал(а):
18.11.2007 21:10
Я тоже, кстати. Всю жизнь в C sizeof(char) возвращал 1


В C символьные константы вроде имеют тип int. А sizeof(char) конечно всегда равен 1. Это ведь основа основ.

Кстати sizeof(int) теоретически может быть равен sizeof(char).
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu

Re: C vs. C++

Сообщение serzh-z »

Zeus писал(а):
18.11.2007 20:33
Честно говоря за 10 лет программёжа на С - первый раз про 4 байта слышу.
Размер литеры 'a' в С - будет 4 байта, в C++ - 1. Размер переменной типа char - везде 1. Если так понятнее.
Спасибо сказали:
Аватара пользователя
Uncle_Theodore
Сообщения: 3339
ОС: Slackware 12.2, ArchLinux 64

Re: C vs. C++

Сообщение Uncle_Theodore »

Тем, у кого не заработало, 'a' тут английское. Ну или смените на 's', чтобы не путаться.
А вообще, я рад, что вам понравилось... :)
Спасибо сказали:
Аватара пользователя
Zeus
Сообщения: 694

Re: C vs. C++

Сообщение Zeus »

А откуда 4 байта-то взялось?
И это никак не зависит от кодировки?
Спасибо сказали:
Vas
Сообщения: 540
Статус: Proamd-шник
ОС: OpenSuSE 11.0 и OS X 10.5.4

Re: C vs. C++

Сообщение Vas »

+1 Увы таких много...

У нас в Унвере читают лекции используя словосочетание "язык си", причем содержание этих лекций представляет жуткую смесь си и си++.
А программируем мы в Visual C++. Только не под .NET, а под Win32.

И вы еще удивляетесь.. Я вообще уже перестаю понимать чем же они отличаются. Что уж говорить про основную массу студентов, которые кроме как Turbo Pascal ничего больше в жизни не видели.
Находя богатство - теряете совесть
Находя женщину - теряете рассудок
Находя истину - теряете веру
и только потеряв всё - находите свободу.
Спасибо сказали: