printf + uint_64 на Солярисе 9?

Да, IP-адреса меняются. Такова природа большинства жилых интернет-соединений. Только сравнительно небольшое количество соединений имеют статические IP-адреса. IP-адреса являются деталями реализации механизма маршрутизации данных, они не являются постоянными или уникальными идентификаторами.

9
задан Kris Pruden 3 October 2008 в 00:17
поделиться

5 ответов

Если Вы имеете, имеют inttypes.h доступный, можно использовать макросы, которые это обеспечивает:

printf(  "%" PRIu64 "\n", val);

Не симпатичный (я, кажется, говорю, что много недавно), но это работает.

11
ответ дан 4 December 2019 в 10:34
поделиться

В совместимой системе C99:

#include <inttypes.h>

uint64_t big = ...;
printf("%" PRIu64 "\n", big);

Посмотрите раздел 7.8 из стандарта C99.

Спецификаторами является {PRI, SCN} [diouxX] {N, LEASTN, МАКС, FASTN, PTR}

Где PRI является для printf () семейством, SCN является для scanf () семейством, d и мной для целочисленных типов со знаком; o, u, x, X для неподписанных целочисленных типов как восьмеричные, десятичные, шестнадцатеричные, и Шестнадцатеричные; N является одной из поддерживаемых ширин; НАИМЕНЬШЕЕ и FAST соответствуют тем модификаторам; PTR для intptr_t; и МАКС для intmax_t.

7
ответ дан 4 December 2019 в 10:34
поделиться

Можно использовать %llu долгое время долго. Однако это не очень портативно также, потому что long long как гарантируют, не будет 64 бита.:-)

0
ответ дан 4 December 2019 в 10:34
поделиться

Можно добраться uint64_t от stdint.h если Вы хотите избежать условного определения типа SunOS.

0
ответ дан 4 December 2019 в 10:34
поделиться

Ответ зависит от того, является ли Ваш код на самом деле C или C++. В C необходимо использовать unsigned long long вместо другого типа (это совместимо к текущему стандарту, и long long довольно распространено насколько поддержка C99 идет), добавляя ULL вместо L к Вашей константе, и использующий (как был упомянут), %llu как Ваш спецификатор. Если поддержка C99 не существует, можно хотеть проверить документацию компилятора, поскольку нет никакого другого стандартного способа сделать это. long long guarateed должен составить 64 бита, по крайней мере.

2
ответ дан 4 December 2019 в 10:34
поделиться