|
Переменные long long |
|
|
|
 |
Ответов
|
Sep 6 2015, 03:33
|
Местный
  
Группа: Свой
Сообщений: 459
Регистрация: 30-03-06
Из: Москва
Пользователь №: 15 600

|
Цитата(inventor @ Sep 3 2015, 15:50)  пишется какая то лажа - printf ничего не выводит, хотя пытаюсь и %lld и %Ld компилятор C99 и вроде должен поддерживать все эти вещи Он и поддерживает. Должно быть так: Код long long ll = 100500; printf( "ll = %" PRIu64 "\n\r", ll ); Остальное по аналогии можно найти самостоятельно. См. например тут или тут. И лучше отойти от всех этих неопределенных short, long и т.п. В Це99 существуют более внятные типы, вроде uint32_t, uint64_t, int64_t...
|
|
|
|
|
Sep 6 2015, 17:37
|
Местный
  
Группа: Свой
Сообщений: 459
Регистрация: 30-03-06
Из: Москва
Пользователь №: 15 600

|
Цитата(zltigo @ Sep 6 2015, 10:04)  Находясь в твердом уме "так" писать не надо. Почему у Автора не получилсь - уже объяснили. По этой причине и использование макросов-оберток вместо явного описания формата ничего не изменит. Прежде чем лезть умничать, неплохо бы проверить/почитать. В IAR, даже с "правильной" библиотекой, действительно могут не работать %lld и %Ld, при этом PRIu64 работает без проблем. За давностью времени, сейчас уже не помню, на каком из IAR с этим сталкивался, возможно ARM, возможно AVR. Но это факт. Что у автора получилось - я видел. Костыль, да еще и кривой. Мой вариант - рабочий. Причем в отличии от ворчания отдельных граждан, проверено непосредственно в IAR. Почему "так" писать надо, следует из ссылки, что я дал. Код #include <inttypes.h> #include <stdio.h>
int main( void ) { long long ll = 0; uint64_t u64 = 0;
while( true ) { printf( "ll = %" PRIu64 "\n", ll ); printf( "u64 = %" PRIu64 "\n", u64 );
u64 = u64 ? u64 << 1 : 1; ll = ll ? ll << 1 : 1; } } Терминал: Код u64 = 144115188075855872 ll = 288230376151711744 u64 = 288230376151711744 ll = 576460752303423488 u64 = 576460752303423488 ll = 1152921504606846976 u64 = 1152921504606846976 ll = 2305843009213693952 u64 = 2305843009213693952 ll = 4611686018427387904 u64 = 4611686018427387904 ll = 9223372036854775808 u64 = 9223372036854775808 ll = 0 u64 = 0 ll = 1 u64 = 1 ll = 2 u64 = 2 ll = 4 u64 = 4 ll = 8 u64 = 8 ll = 16 u64 = 16 ll = 32 u64 = 32 ll = 64 u64 = 64 ll = 128 u64 = 128 ll = 256 u64 = 256 ll = 512 u64 = 512 ll = 1024 u64 = 1024 ll = 2048 u64 = 2048 ll = 4096 u64 = 4096
|
|
|
|
|
Sep 6 2015, 18:54
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
QUOTE (Tahoe @ Sep 6 2015, 20:37)  Прежде чем лезть умничать, неплохо бы проверить/почитать. В IAR, даже с "правильной" библиотекой, действительно могут не работать %lld и %Ld, при этом PRIu64 работает без проблем. А то, что муть " PRIu64 " есть ни что иное, как макрос-обертка llu это никакой мыслью в Вас в голове не отозвалось? CODE #define __STRINGIFY(a) #a #define __PRI64(x) __STRINGIFY(l##x) #define PRIu64 __PRI64(u) Так что "проверяй" не проверяй. QUOTE Но это факт. Увы, но это бред  . QUOTE Мой вариант - рабочий. Причем в отличии от ворчания отдельных граждан, проверено непосредственно в IAR. Не сочтите за труд выкинуть муть " PRIu64 " и написать llu и получите точно такой-же рабочий вариант.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
Сообщений в этой теме
inventor Переменные long long Sep 3 2015, 12:50 megajohn Цитата(inventor @ Sep 3 2015, 15:50) комп... Sep 3 2015, 13:32 inventor Цитата(megajohn @ Sep 3 2015, 16:32) б-р-... Sep 3 2015, 13:55  zltigo QUOTE (inventor @ Sep 3 2015, 16:55) став... Sep 3 2015, 15:53   inventor Цитата(zltigo @ Sep 3 2015, 18:53) 1) Как... Sep 4 2015, 07:28    yes Цитата(inventor @ Sep 4 2015, 10:28) комп... Sep 4 2015, 11:54     megajohn Цитата(yes @ Sep 4 2015, 14:54) в микроко... Sep 4 2015, 12:12      zltigo QUOTE (megajohn @ Sep 4 2015, 15:12) скол... Sep 4 2015, 12:26      yes Цитата(megajohn @ Sep 4 2015, 15:12) скол... Sep 4 2015, 15:07    Tahoe Цитата(zltigo @ Sep 6 2015, 21:54) Не соч... Sep 6 2015, 19:09     zltigo QUOTE (Tahoe @ Sep 6 2015, 22:09) Значит ... Sep 6 2015, 19:14      Tahoe Цитата(zltigo @ Sep 6 2015, 22:14) Пользу... Sep 6 2015, 19:52       zltigo QUOTE (Tahoe @ Sep 6 2015, 22:52) Да-да, ... Sep 6 2015, 20:28        Tahoe Цитата(zltigo @ Sep 6 2015, 23:28) Это из... Sep 6 2015, 22:03         scifi Цитата(Tahoe @ Sep 7 2015, 01:03) Есть га... Sep 7 2015, 03:57         zltigo QUOTE (Tahoe @ Sep 7 2015, 01:03) И небол... Sep 7 2015, 06:26 inventor Цитата(Tahoe @ Sep 6 2015, 06:33) Он и по... Sep 8 2015, 05:08  zltigo QUOTE (inventor @ Sep 8 2015, 08:08) Я СВ... Sep 8 2015, 05:59   inventor Цитата(zltigo @ Sep 8 2015, 08:59) Вообще... Sep 8 2015, 06:34    megajohn хм, как то странно отработал printf c long long
... Sep 8 2015, 07:08     megajohn Цитата(megajohn @ Sep 8 2015, 10:08) хм, ... Sep 8 2015, 07:31 Сергей Борщ Вы можете продолжать спорить, но когда после перех... Sep 7 2015, 07:24 zltigo QUOTE (Сергей Борщ @ Sep 7 2015, 10:24) В... Sep 7 2015, 07:52  Сергей Борщ Цитата(zltigo @ Sep 7 2015, 10:52) а в ее... Sep 7 2015, 08:50   zltigo QUOTE (Сергей Борщ @ Sep 7 2015, 11:50) М... Sep 7 2015, 09:24    Сергей Борщ Цитата(zltigo @ Sep 7 2015, 12:24) Такое ... Sep 8 2015, 06:19     zltigo QUOTE (Сергей Борщ @ Sep 8 2015, 09:19) Д... Sep 8 2015, 07:21    Kabdim Цитата(zltigo @ Sep 7 2015, 12:24) char и... Sep 8 2015, 12:39     zltigo QUOTE (Kabdim @ Sep 8 2015, 15:39) Для эт... Sep 8 2015, 12:52
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|