2015-03-14 5 views
2
string.format (formatstring, ···) 

Возвращает отформатированную версию своего переменного количества аргументов после описания, приведенного в его первом аргументе (который должен быть строкой). Строка формата соответствует тем же правилам, что и функция ISO C sprintf. Единственное отличие состоит в том, что опции/модификаторы *, h, L, l, n, and p не поддерживаются и что есть дополнительная опция, q.Как распечатать lld в Lua 5.3

Lua 5.3 не поддерживает lld, как я могу напечатать lld в Lua 5.3?

+0

Вопрос был изменен на другой один за вами. В C, 'long long',' unsigned long long' и 'uint64' - три разных типа, непонятно, что вы просите. Я вернул его обратно. Если у вас есть новый вопрос, задайте новый вопрос. –

ответ

2

Короткий ответ: использование %d.


В C sprintf, %lld используется для форматирования типа long long, который представляет собой целое число, по меньшей мере, тип 64 бит.

В Lua 5.3 тип number имеет два внутренних представления, целое и плавающее. Представление Integer является 64-битным стандартным Lua. Вы можете использовать %d чтобы напечатать это независимо от его внутреннего представления:

print(string.format("%d", 2^62)) 

Выхода: 4611686018427387904


В Lua исходного файл luaconf.h, вы можете увидеть, что Lua преобразует %d в approapriate формата:

#define LUA_INTEGER_FMT  "%" LUA_INTEGER_FRMLEN "d" 

и LUA_INTEGER_FRMLEN определяется как "", "l" или "ll" если отличается внутреннее представление целого числа используется:

#if defined(LLONG_MAX)  /* { */ 
/* use ISO C99 stuff */ 
#define LUA_INTEGER  long long 
#define LUA_INTEGER_FRMLEN "ll" 
//... 
+0

'print (string.format ("% d ", 2^64))' – Sleepwom

+0

плохой аргумент # 2 в 'format' (число не имеет целочисленного представления) – Sleepwom

+0

print (string.format ("% d", 9223372036854775807)) assert (2^63 == 9223372036854775807) print (string.format ("% d", 2^63)) - неправильный аргумент # 2 в 'format' (число не имеет целочисленного представления) Почему? – Sleepwom

 Смежные вопросы

  • Нет связанных вопросов^_^