2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему На страницу 1, 2, 3, 4, 5 ... 7  След.
 
 Книга с полным и систематичным изложением современного С++?
Сообщение01.11.2014, 14:23 
Аватара пользователя


22/09/09

1907
Много лет использую С++ односторонне: перевожу нужные мне фрагменты кода на Delphi, на котором и работаю. Но недавно понадобился CUDA C. Разобрался, написал консольное приложение. Отладил для небольших чисел. Там у меня переменная
Код:
int sum;
Ее вывод:
Код:
printf("sum=%i",sum);
растет очень быстро от входа, поэтому когда на входе числа чуть больше, то пришлось сначала определить
Код:
long int sum;
а потом
Код:
long long int sum;
И тут программа перестала работать правильно - сказалось мое одностороннее знание. Переводя С++, я меньше всего обращал внимание, какой формат указан в printf. В Delphi
Код:
write('sum=',sum)
будет правильно работать, если
Код:
sum : integer;
и если
Код:
sum : int64;
Полез в литературу. В Б.Страуструп "Язык С++" и в Б. Эккель "Философия С++" и в Б.Керниган, Д.Ритчи "Язык программирования Си" не нашел. Естественно, нашел в MSDN %I64i, но там сказано, что это специфичное расширение для VS. А вдруг я решу перенести свою программу на Линукс? Есть какой стандартный спецификатор для вывода 64-битных целых? Конечно же, можно и в стандарты залезть, но многие стандарты не самая удобная вещь для чтения. Может, есть такая книга, где полно и систематично изложены подобные детали? (По Delphi и Паскалю таких книг масса!)

 Профиль  
                  
 
 Re: Книга с полным и систематичным изложением современного С++?
Сообщение01.11.2014, 14:56 
Заслуженный участник


09/05/12
25179
Какая-то у Вас странная смесь из C и C++ получается...

Если Вы используете C++, то непонятно, зачем вообще нужен printf. Если C, то полный набор спецификаций формата, наверное, ни в какую книгу, кроме стандарта, никто вставлять не будет - слишком много, слишком однообразно и, главное, и так всегда есть под руками у программиста (либо man 3 printf, либо какая-нибудь справка).

bin в сообщении #925066 писал(а):
Есть какой стандартный спецификатор для вывода 64-битных целых?
Да - "%lld".

 Профиль  
                  
 
 Re: Книга с полным и систематичным изложением современного С++?
Сообщение01.11.2014, 14:57 
Заслуженный участник
Аватара пользователя


06/10/08
6422
В таких случаях принято мануалы или стандарт читать, например http://pubs.opengroup.org/onlinepubs/96 ... rintf.html
POSIX 2008 писал(а):
ll (ell-ell)
Specifies that a following d, i, o, u, x, or X conversion specifier applies to a long long or unsigned long long argument; or that a following n conversion specifier applies to a pointer to a long long argument.

Все перечисленные Вами книги были, скорее всего, написаны до введения long long в стандарт, так что неудивительно, что его там нет

 Профиль  
                  
 
 Re: Книга с полным и систематичным изложением современного С++?
Сообщение01.11.2014, 15:22 
Аватара пользователя


22/09/09

1907
Pphantom в сообщении #925073 писал(а):
Какая-то у Вас странная смесь из C и C++ получается...
Разве это у меня? Разве многие компиляторы не допускают смеси C и C++ ? Микрософтовские, интеловские, борландовские, например? ;-) Мне сейчас не нужно ООП на С, но современных книг по Си, похоже, нет (Б.Керниган, Д.Ритчи написали свою в 1978 г., судя по копирайту) поэтому я и спросил про С++, учитывая:
Xaositect в сообщении #925074 писал(а):
Все перечисленные Вами книги были, скорее всего, написаны до введения long long в стандарт, так что неудивительно, что его там нет
Pphantom в сообщении #925073 писал(а):
Да - "%lld".
Ok, спасибо!

 Профиль  
                  
 
 Re: Книга с полным и систематичным изложением современного С++?
Сообщение01.11.2014, 15:32 


10/04/12
705
bin в сообщении #925076 писал(а):
Мне сейчас не нужно ООП на С, но современных книг по Си, похоже, нет


Есть стандарт, которьій нормально чистается. А какой Си вам нужен? Тем более, что C99 в некоторьіх местах не совместим с плюсами. Например, массивьі на стеке, restrict pointers, ...

 Профиль  
                  
 
 Re: Книга с полным и систематичным изложением современного С++?
Сообщение01.11.2014, 15:42 
Аватара пользователя


22/09/09

1907
mustitz в сообщении #925078 писал(а):
А какой Си вам нужен?
CUDA C. В Wind XP он совместим с MS VS 2010 Express. А какой Си нужен будет в Linux пока не знаю.

 Профиль  
                  
 
 Re: Книга с полным и систематичным изложением современного С++?
Сообщение01.11.2014, 17:05 
Заслуженный участник


09/05/12
25179
bin в сообщении #925076 писал(а):
Разве это у меня? Разве многие компиляторы не допускают смеси C и C++ ?
Кое-что допускают, но из этого не следует, что этим стоит пользоваться. :D

bin в сообщении #925076 писал(а):
Мне сейчас не нужно ООП на С, но современных книг по Си, похоже, нет (Б.Керниган, Д.Ритчи написали свою в 1978 г., судя по копирайту)
Ну, например, Стивен Прата, "Язык программирования C", есть русское издание 2013 года, английское несколько старше, но не сильно (во всяком случае, C99 там есть). Но для вопросов такого рода действительно проще использовать стандарт.

 Профиль  
                  
 
 Re: Книга с полным и систематичным изложением современного С++?
Сообщение01.11.2014, 18:16 
Аватара пользователя


22/09/09

1907
Ok, спасибо!

 Профиль  
                  
 
 Re: Книга с полным и систематичным изложением современного С++?
Сообщение03.11.2014, 16:12 


22/08/14
25
Ещё из современных книг есть Герберт Шилдт, Полный справочник по С. У него есть книги и по С++. У меня издание 2005 года, но позже эта книга переиздавалась. В ней содержится описание стандартов С89 и С99.

 Профиль  
                  
 
 Re: Книга с полным и систематичным изложением современного С++?
Сообщение04.11.2014, 12:23 
Аватара пользователя


22/09/09

1907
vvk
Спасибо, посмотрю. На ozon продают издание 2007 г. Не устарело?

 Профиль  
                  
 
 Re: Книга с полным и систематичным изложением современного С++?
Сообщение05.11.2014, 23:05 
Заслуженный участник


02/08/11
7003
Pphantom в сообщении #925073 писал(а):
Если Вы используете C++, то непонятно, зачем вообще нужен printf.
А он довольно удобен. И я предпочитаю его монструозному cout. И нормальные компиляторы проверяют формат на этапе компиляции.

 Профиль  
                  
 
 Re: Книга с полным и систематичным изложением современного С++?
Сообщение06.11.2014, 01:11 
Заслуженный участник
Аватара пользователя


30/01/06
72407
Он удобен в использовании, но неудобен в плане совместимости и переносимости. Лучше boost::format.

 Профиль  
                  
 
 Re: Книга с полным и систематичным изложением современного С++?
Сообщение06.11.2014, 10:34 
Заслуженный участник
Аватара пользователя


06/10/08
6422
Сложно найти что-то более переносимое, чем стандартная библиотека С, уж точно не буст.

 Профиль  
                  
 
 Re: Книга с полным и систематичным изложением современного С++?
Сообщение06.11.2014, 10:40 
Заслуженный участник
Аватара пользователя


30/01/06
72407
Xaositect в сообщении #927330 писал(а):
Сложно найти что-то более переносимое, чем стандартная библиотека С

Ну-у-у... благодаря своей распространённости, оно обросло таким количеством версий и реализаций... а буст хотя бы на любой платформе из одних и тех же исходников компилируется.

 Профиль  
                  
 
 Re: Книга с полным и систематичным изложением современного С++?
Сообщение06.11.2014, 11:56 
Аватара пользователя


22/09/09

1907
Сказанное выше, что не следует смешивать Си и С++:
Pphantom в сообщении #925073 писал(а):
Какая-то у Вас странная смесь из C и C++ получается...

Если Вы используете C++, то непонятно, зачем вообще нужен printf.
меня заинтересовало, и вот нашел показательный контрпример от авторитетной компании:
from file: ...\NVIDIA Corporation\CUDA Samples\v5.0\6_Advanced\ptxjit.cpp:
код: [ скачать ] [ спрятать ]
Используется синтаксис C++
/**
 * Copyright 1993-2012 NVIDIA Corporation.  All rights reserved.
[...]
 * This sample uses the Driver API to just-in-time compile (JIT) a Kernel from PTX code.
[...]
 */

[...]
     printf("> Using CUDA device [%d]: %s\n", cuda_device, deviceProp.name);
    }

    // Allocate memory on host and device (Runtime API)
    // NOTE: The runtime API will create the GPU Context implicitly here
    if ((h_data = (int *)malloc(memSize)) == NULL)
    {
        std::cerr << "Could not allocate host memory" << std::endl;
        exit(EXIT_FAILURE);
    }
[...]
Так следует или нет? А смешивают... ;-)

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 101 ]  На страницу 1, 2, 3, 4, 5 ... 7  След.

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group