Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> нужен ли Си ? на десктопе 
V
    Опции темы
 
Нужен ли Си на десктопе?
Нужен [ 28 ]  [66.67%]
Не нужен [ 14 ]  [33.33%]
Всего проголосовавших: 42
В этом опросе возможен один вариант ответа
Гости не могут голосовать 
MAKCim
Дата 2.7.2011, 11:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 52
Всего: 207



boostcoder, 
не, сила в истине  smile 


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
nworm
Дата 2.7.2011, 12:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 502
Регистрация: 22.10.2005

Репутация: 1
Всего: 8



2. Для вариантоа "Си не нужен Си++ нужен" - каменты

pascal основной язык для начала обучения. Зачем, вообще, сложный Си вначале давать?
А потом лучше в паре дать сразу C/С++.
Иначе это долго всё слишком.

А если обучение программированию короткое, какие-нибудь радиоэлекторнщики для программирования устройств, например.
Им сразу разумно вбухать C/С++.

Си - это достаточно специфическое, да и легко разбирается после C/С++. Встречается, конечно, в этих устройствах, но разобраться после C/С++ можно.


PM MAIL WWW   Вверх
Dov
Дата 2.7.2011, 12:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


аСинизатор
***


Профиль
Группа: Завсегдатай
Сообщений: 1721
Регистрация: 10.5.2003
Где: Эрец-Исраэль

Репутация: 15
Всего: 88



Цитата(borisbn @ 1.7.2011,  19:09)
Меня не отсутствие конструктора напрягает, а это:
Код

    if ( a != 0 )
    {    
        fclose( a );
    }
    if ( b != 0 )
    {    
        fclose( b );
    }
    if ( c != 0 )
    {    
        fclose( c );
    }

borisbn, пиши так:
Код
fcloseall( );

и не напрягайся...  smile 


--------------------
Тут вечности запах томительный,
И свежие фрукты дешевые, 
А климат у нас – изумительный, 
И только соседи – #уевые. 
                           Игорь Губерман.
PM   Вверх
boostcoder
Дата 2.7.2011, 12:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



Dov, http://linux.die.net/man/3/fcloseall
Цитата

Note that the standard streams (stdin, stdout and stderr) are also closed.


PM WWW   Вверх
Dov
Дата 2.7.2011, 13:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


аСинизатор
***


Профиль
Группа: Завсегдатай
Сообщений: 1721
Регистрация: 10.5.2003
Где: Эрец-Исраэль

Репутация: 15
Всего: 88



В любом случае можно сделать так:
Код
    if(a = fopen("a_name", "rb")){
        if(b = fopen("b_name", "rb")){
            if(c = fopen("c_name", "rb")){
                result = true;   // обработка
                fclose(c);
            }
            fclose(b);
        }    
        fclose(a);
    }



--------------------
Тут вечности запах томительный,
И свежие фрукты дешевые, 
А климат у нас – изумительный, 
И только соседи – #уевые. 
                           Игорь Губерман.
PM   Вверх
I_Am_Rock
Дата 2.7.2011, 15:16 (ссылка)    | (голосов:4) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 523
Регистрация: 18.1.2008

Репутация: нет
Всего: 15



Что уж тут говорить - даже разные версии builder с++ - как разные языки. 

Вы тут задачки на знание решаете - поскажите, если не трудно  smile 

http://forum.vingrad.ru/forum/topic-333328...y2370828/0.html

 smile 
PM MAIL WWW   Вверх
Сыроежка
Дата 3.7.2011, 15:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 127
Регистрация: 24.6.2011

Репутация: нет
Всего: 1



Цитата(maint @  1.7.2011,  18:50 Найти цитируемый пост)
говорит о амбициях, а не знании. unsigned по умолчанию не всегда unsigned int. Не во всех компиляторах. Иногда это unsigned char.  


Этот перл безграмотности надо будет запомнить! Очевидно, что вы ни разу в жизни не видели стиандарта языка С!smile

Спасибо, я посмеялся!smile
PM MAIL   Вверх
mes
Дата 3.7.2011, 16:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(MAKCim @  2.7.2011,  10:28 Найти цитируемый пост)
чем больше "плюшек", тем больше костылей и возникающих сложностей 

не всегда, да "насильное" добавление плюшек приводит к костылям, но  ..
Цитата(MAKCim @  2.7.2011,  10:28 Найти цитируемый пост)
в простоте сила 

это не противоречит наличию плюшек в простом языке smile

В С++ проблема в том, что плюшки являются костылями, что приводит к появлению таких "правил" :
"Это так то так, но в этом случае, если еще вот это, то тогда по другому.. 





--------------------
PM MAIL WWW   Вверх
Сыроежка
Дата 3.7.2011, 16:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 127
Регистрация: 24.6.2011

Репутация: нет
Всего: 1



Цитата(borisbn @  1.7.2011,  19:09 Найти цитируемый пост)
Цитата(Сыроежка @  1.7.2011,  18:16 )
Попробуйте ответить без компилятора на простые вопросы, как например, этот


собрался сначала ответить никуда не подглядывая, но потом, всё-таки не выдержал, залез в стандарт, и понял, что вроде как правильно думал.
1. 0x80 == '\x80' false, т.к.

Цитата

If an integer character constant contains
a single character or escape sequence, its value is the one that results when an object with
type char whose value is that of the single character or escape sequence is converted to type int



'\x80' - при помещении его в char становится отрицательным

потом, правда, увидел это

Цитата

The value of an octal or hexadecimal escape sequence shall be in the range of
representable values for the type unsigned char for an integer character constant, or
the unsigned type corresponding to wchar_t for a wide character constant.



и засомневался...

2. unsigned, т.к.

Цитата

If an int can represent all values of the original type, the value is converted to an int;
otherwise, it is converted to an unsigned int. These are called the integer
promotions




Какую оценку ставите ?  



Я вам ставлю "отлично" за вашу смелость! 
Это говорит, что вы - квалифицированный программист, стремитесь к познанию, а потому не боитесь показать свое незнание. Все остальные, насколько я понимаю, побоялись отвечать на эти вопросы.

К сожалению у меня под рукой нет стандарта С, так как я общаюсь из интернет-кафе, поэтому вам придется поверить на слово, или самому повнимательней поискать нужные места в стандарте.

Относительно первого вопроса. Во-первых, тип символьной константы является int. А это значит существует серьезное отличие С и С++. Так, например,

sizeof( 'a' )
 
в С равно 4 (для 32-битовой платформы), тогда как в С++ 1.

Будет ли константа знаковой или беззнаковой определяется тем, как ведет себя тип char  данной реализации компилятора. Если тип char соответствует по поведению типу unsugned char, то значение выражения будет равно 1, так как символьная константа '\x80' будет положительным целым числом. 
Ежели тип char ведет себя как signed char , то данная константа будет отрицательным целым числом, а потому выражение будет равно 0.

То есть правильный ответ для первого примера состоит в том, что значение выражения зависит от реализации компилятора, или, как пишут в стандарте, implementation defined. Нужно смотреть раздел, где описываются константы, в частности параграф, посвященный символьным константам.

Обычно у компиляторов существует либо опция, либо #pragma команда, которая позволяет задать, как компилятор будет интерпретировать тип char: либо как unsigned char, либо как signed char.

Так что вы можете проверить результат меняя данную опцию, и убедитесь, что в одном случае это выражение равно 1, а в другом 0.

Что касается второго примера, то вы правильно сослались на integer promotion. Только в данном примере надо рассматривать не integer promotion, так как операнды уже имеют ранг, который выше ранга или равен рангу типу int, а надо рассматривать обычное (default или usual - сейчас не помню) преобразование типов. Этот параграф, если я его правильно назвал, как раз следует сразу же за параграфом integer promotion. Так как ранг типа long выше ранга типа unsigned int но в то же время long не может представить все значения типа unsigned int то выражение получает тип unsigned long.

Вы это легко можете проверить в С++. Для этого достаточно написать простую шаблонную функцию

Код

#include <iostream>

template <typename T>
void f( const T &value )
{
   std::cout << typeid( value ).name() << std::endl;
}

int main()
{
   unsigned x = 0;
   long y = 0;

   f( x + y );
}


Это сообщение отредактировал(а) Сыроежка - 3.7.2011, 17:32
PM MAIL   Вверх
mes
Дата 3.7.2011, 17:51 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(Сыроежка @  3.7.2011,  15:18 Найти цитируемый пост)
 а надо рассматривать обычное (default или usual - сейчас не помню) преобразование типов.

integral conversion

Добавлено через 1 минуту и 4 секунды
Цитата(Сыроежка @  3.7.2011,  15:18 Найти цитируемый пост)
Все остальные, насколько я понимаю, побоялись отвечать на эти вопросы.

мне кажется остальные подумали, что индивидуальный вопрос, и решили не вмешиваться smile


Это сообщение отредактировал(а) mes - 3.7.2011, 17:51


--------------------
PM MAIL WWW   Вверх
Сыроежка
Дата 3.7.2011, 17:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 127
Регистрация: 24.6.2011

Репутация: нет
Всего: 1



Цитата(mes @  3.7.2011,  17:51 Найти цитируемый пост)
мне кажется остальные подумали, что индивидуальный вопрос, и решили не вмешиваться 


Не скажите! Тут вмешиваются без спроса куда угодно! Скорей всего такая "скромность" связана именно с неуверенностью в своих знаниях!smile
PM MAIL   Вверх
Сыроежка
Дата 3.7.2011, 18:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 127
Регистрация: 24.6.2011

Репутация: нет
Всего: 1



Цитата(mes @  3.7.2011,  17:51 Найти цитируемый пост)
Цитата(Сыроежка @  3.7.2011,  15:18 )
 а надо рассматривать обычное (default или usual - сейчас не помню) преобразование типов.


integral conversion


Что-то мне помнится, что там присутствовало слово usual, то есть usual integral conversion
PM MAIL   Вверх
mes
Дата 3.7.2011, 19:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(Сыроежка @  3.7.2011,  17:14 Найти цитируемый пост)
 что там присутствовало слово usual, то есть usual integral conversion 

а Вы о usual arithmetic conversions.. только
Цитата(Сыроежка @  3.7.2011,  15:18 Найти цитируемый пост)
надо рассматривать не integer promotion,

оно не противопоставляется  integral promotion, а включает.. 

ну и arithmetic conversions - это не преобразование как таковое, а метод (не знаю какое слово подойдет лучше) выбора подходящего преобразования.. 



--------------------
PM MAIL WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0586 ]   [ Использовано запросов: 24 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.