2014 dxdy logo

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

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




На страницу 1, 2, 3, 4, 5 ... 7  След.
 
 Книга с полным и систематичным изложением современного С++?
Сообщение01.11.2014, 14:23 
Аватара пользователя
Много лет использую С++ односторонне: перевожу нужные мне фрагменты кода на 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 
Какая-то у Вас странная смесь из C и C++ получается...

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

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

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

 
 
 
 Re: Книга с полным и систематичным изложением современного С++?
Сообщение01.11.2014, 15:32 
bin в сообщении #925076 писал(а):
Мне сейчас не нужно ООП на С, но современных книг по Си, похоже, нет


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

 
 
 
 Re: Книга с полным и систематичным изложением современного С++?
Сообщение01.11.2014, 15:42 
Аватара пользователя
mustitz в сообщении #925078 писал(а):
А какой Си вам нужен?
CUDA C. В Wind XP он совместим с MS VS 2010 Express. А какой Си нужен будет в Linux пока не знаю.

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

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

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

 
 
 
 Re: Книга с полным и систематичным изложением современного С++?
Сообщение03.11.2014, 16:12 
Ещё из современных книг есть Герберт Шилдт, Полный справочник по С. У него есть книги и по С++. У меня издание 2005 года, но позже эта книга переиздавалась. В ней содержится описание стандартов С89 и С99.

 
 
 
 Re: Книга с полным и систематичным изложением современного С++?
Сообщение04.11.2014, 12:23 
Аватара пользователя
vvk
Спасибо, посмотрю. На ozon продают издание 2007 г. Не устарело?

 
 
 
 Re: Книга с полным и систематичным изложением современного С++?
Сообщение05.11.2014, 23:05 
Pphantom в сообщении #925073 писал(а):
Если Вы используете C++, то непонятно, зачем вообще нужен printf.
А он довольно удобен. И я предпочитаю его монструозному cout. И нормальные компиляторы проверяют формат на этапе компиляции.

 
 
 
 Re: Книга с полным и систематичным изложением современного С++?
Сообщение06.11.2014, 01:11 
Аватара пользователя
Он удобен в использовании, но неудобен в плане совместимости и переносимости. Лучше boost::format.

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

 
 
 
 Re: Книга с полным и систематичным изложением современного С++?
Сообщение06.11.2014, 10:40 
Аватара пользователя
Xaositect в сообщении #927330 писал(а):
Сложно найти что-то более переносимое, чем стандартная библиотека С

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

 
 
 
 Re: Книга с полным и систематичным изложением современного С++?
Сообщение06.11.2014, 11:56 
Аватара пользователя
Сказанное выше, что не следует смешивать Си и С++:
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  След.


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group