printf с sizeof на 32 по сравнению с 64 платформами: как я обрабатываю код формата независимым от платформы способом?

Вы можете map пройти через массив объектов и, используя destructer, получить desired key's value и вернуть их как объект в соответствии с вашей парой key value.

let obj = [{"id": "8","name": "Austin to Carls 32 to 33 chocolates to oil","price": "9.67","category": "oils",  "description": "The standard Lorem Ipsum passage, used since the 1500s Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.Ut enim ad minim veniam,quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore e", "ts": "2019-01-08 11:47:09", "product_image_id": "33", "enabled": "1","product_image": "crater-winslow-40.png", "counter": 3}, {"id": "9","name": "something test 3 upd","price": "12.23","category": "chocolates","description": "The standard Lorem Ipsum passage, used since the 1500s Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididu", "ts": "2019-01-08 08:54:49", "product_image_id": "29", "enabled": "1", "product_image": "40-64-grand-canyon.png","counter": 2}]

let op = obj.map(e=>{
  let {counter,id,name,price,description} = e;
  return{
    name,price,description,
    quantity: counter,
    sku: id,
  }
})

console.log(op)

29
задан Cœur 13 December 2017 в 10:54
поделиться

3 ответа

Переносимые идентификаторы printf предоставлены в включаемом файле inttypes.h .

Этот включаемый файл имеет множество переносимых идентификаторов для вашей конкретной среды выполнения. В вашем примере вам нужен PRIuPTR, что означает « PR intf I dentifier u nsigned с размером до размера указателя».

Ваш пример тогда будет:

printf("The amount of RAM used is %" PRIuPTR, anIntVariable*sizeof(double) );

Результаты на 64-битной Linux с GCC 4.3 ( int anIntVariable = 1 ):

$ gcc test.c -m32 -o test && ./test
The amount of RAM used is 8
$ gcc test.c -o test && ./test
The amount of RAM used is 8

Для полноты картины существуют идентификаторы также для scanf с префиксом SCN.

20
ответ дан 28 November 2019 в 01:51
поделиться

Возвращаемое значение sizeof - size_t. Если вы используете компилятор, совместимый с C99, похоже, что для этого вы можете использовать %zd %zu.

D'Oh: %zu (без знака), конечно. Спасибо, только.

13
ответ дан wds 28 November 2019 в 01:51
поделиться

Прежде всего, вы должны сопоставить Спецификатор "%" с фактическим типом данных, который вы хотите напечатать. sizeof возвращает тип данных size_t , и точно так же, как вы не должны пытаться напечатать число с плавающей запятой с помощью спецификатора "% d", вы не должны пытаться напечатать size_t с помощью " % u "или"% d "или что-нибудь, что на самом деле не означает size_t.

7
ответ дан 28 November 2019 в 01:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: